我只想使用crypt()
生成加密的密码,并编写一个调用crypt()
方法的演示。
这是我的代码
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%s\n",crypt("abc","ab"));
exit(0);
}
我使用
"gcc tem.c -lcrypt'
进行编译,当我运行它时,一切似乎都正确,但是出现了“段错误”。所以请告诉我这个简单的程序怎么了? 最佳答案
如果使用标志-Wall
进行编译,则会看到原因。
如果您阅读manual page,则会在包含#define _XOPEN_SOURCE
之前看到它使用了<unistd.h>
。实际上,应在包含任何 header 之前定义它。
如果您没有定义_XOPEN_SOURCE
,那么crypt
函数将不会被原型(prototype)化。然后,编译器不知道实际的返回类型是什么,也不知道参数的类型和数量。因此,它将假定该函数返回一个int
,而您的printf
需要一个字符串,因此将出现类型不匹配的情况,从而导致崩溃。
关于c - 如何在Linux中使用crypt()方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15549591/