strtok return c 中的 int 类型

strtok return int type in c

当我运行这段代码时,它给出了一个分段错误。

main ()
{
    char *line ="2,3,22";
    int size=3,i,j; 
    double value; 
    char *val;

    for (i = 0; i<size ; i++) {
        if (line == NULL) break;
        printf("%s\n",strtok (line ,","));
    }
}

并给了一个

"warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
 printf("%s\n",strtok (line ,","));"

因此,当我将 strtok 值分配给 char* 时,它给出了一个错误。为什么 strtok return 是一个 int 值?解决方法是什么?

它正在使用 strtok 的隐式原型。您需要 #include <string.h>(您可能还需要为 NULL 添加 stddef.h,并且还应为 printf 添加 stdio.h)。