как использовать метод 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

выглядит хорошо для меня!