как использовать метод 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
выглядит хорошо для меня!