将char数组传递给函数

时间:2013-09-04 01:37:28

标签: c

可怕的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语言中练习弦乐,但那一天不是这一天......

2 个答案:

答案 0 :(得分:2)

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

int strtok();

返回int并获取未知数量的参数,它调用隐式函数声明。解决方案只是包含声明string.h的{​​{1}}。

答案 1 :(得分: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;
}