0

可怕的warning: passing argument 1 of ... makes integer from pointer without a cast

我只是不明白这一点。我要做的就是将一个简单的字符串(是的,我知道一个字符数组)传递给一个函数。该函数解析字符串并返回第一部分。有人可以告诉我我做错了什么吗?谢谢!

char* get_request_type(char* buffer) {
    char* p;
    p = strtok(buffer, "|");
    return p;
}

int main()
{
    char buffer[30] = "test|something";
    fprintf(stdout, "buffer: %s\n", buffer);  //<-- looks great but needs parsing
    char* request_type = get_request_type(buffer);  //<-- error is here
    fprintf(stdout, "%s\n", request_type); //<--expecting to see 'test'

}  

也许有一天我会习惯用 C 语言处理字符串,但那一天不是今天……

4

2 回答 2

2

您没有包含string.h,因此编译器将假定strtok定义为:

int strtok();

返回int并接受未知数量的参数,它称为隐式函数声明。解决方案只是包含声明的string.h位置strtok

于 2013-09-06T08:23:08.590 回答
0

这段代码运行良好。如果仍然有任何问题,请发布。

#include<stdio.h>
#include<string.h>
char* get_request_type(char *buffer) {
        char *p; 
        printf("----%s\n",buffer);
        p = strtok(buffer, "|");
        //fprintf("%s--->",p);  
        return p;
}

int main()
{
        char buffer[30] = "test|something";
        fprintf(stdout, "buffer: %s\n", buffer);  //<-- looks great but needs parsing
        char* request_type = get_request_type(buffer);  //<-- No error here
        fprintf(stdout, "request_type: %s\n", request_type);
        return 0;
}
于 2013-09-06T08:09:25.400 回答