C中的crypt()函数不起作用

时间:2014-01-23 14:46:02

标签: c

以下是我的文件名为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.

任何人都知道发生了什么?

3 个答案:

答案 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>