以下是我的文件名为crack.c:
#include <stdio.h>
#define _XOPEN_SOURCE
#include <unistd.h>
void execute(char *alpha)
{
char *beta = crypt(alpha);
printf("%s", beta);
}
int main(int argc, string argv[]){
....
execute(argv[1]);
else{
printf("You submitted %d command line arguments. That's an issue. You need to submit exactly one.", argc);
return 1;
}
}
以下是我在命令行中输入的内容:
jharvard@appliance (~/Dropbox/hacker2): clang -o crack -lcrypt crack.c
以下是命令行向我吐出的内容:
crack.c:8:19: warning: implicit declaration of function 'crypt' is
invalid in
C99 [-Wimplicit-function-declaration]
string beta = crypt(alpha);
^ crack.c:8:12: warning: incompatible integer to pointer conversion initializing
'string' (aka 'char *') with an expression of type 'int'
[-Wint-conversion]
string beta = crypt(alpha);
^ ~~~~~~~~~~~~ 2 warnings generated.
任何人都知道发生了什么?
答案 0 :(得分:2)
我遇到了同样的问题,我意识到改变标题
#define _XOPEN_SOURCE
#include <unistd.h>
通过
#define _GNU_SOURCE
#include <crypt.h>
消除了编译时的错误
答案 1 :(得分:1)
crypt
的功能签名是:
char * crypt (const char *key, const char *salt)
好像你忘记了一个参数!所以你的行:
string beta = crypt(alpha);
应该是这样的:
string beta = crypt(alpha, salt);
答案 2 :(得分:0)
请确保您具有crypt的define和include作为文件顶部的第一行,然后再包含其他任何内容。
#define _XOPEN_SOURCE
#include <unistd.h>