как использовать метод crypt () в Linux?
Я просто хочу использовать crypt() для генерации зашифрованного пароля, и я пишу демо, которые вызывают crypt() метод.
Вот мой код
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%sn",crypt("abc","ab"));
exit(0);
}
я компилирую его с помощью "gcc tem.c -lcrypt' и когда я запускаю его, все кажется правильным, но появляется "ошибка сегмента". пожалуйста, скажите мне, что не так с этой простой программой?
3 ответов
если вы компилируете с флагом -Wall вы увидите, почему.
если вы читали страница руководства вы увидите, что он использует #define _XOPEN_SOURCE перед <unistd.h>. Он должен быть фактически определен перед включением любой заголовок.
если вы не определите _XOPEN_SOURCE тут
вам нужно:
#define _XOPEN_SOURCE
в верхней части исходного файла перед #include.
альтернативно компилировать с опцией gcc -D_XOPEN_SOURCE.
похоже, что это может быть связано с поддержкой криптографической библиотеки.
попробуйте добавить:
#include <crypt.h>
[mstanislav@pardalislabs ~]$ gcc tem.c -lcrypt
[mstanislav@pardalislabs ~]$ ./a.out
abFZSxKKdq5s6
выглядит хорошо для меня!