c中的strtok返回int类型

c中的strtok返回int类型,c,strtok,C,Strtok,当我运行这段代码时,它给出了一个分段错误 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 ,",")); } } 所以当我给char*赋值时,它给出

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

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 ,","));
    }
}

所以当我给char*赋值时,它给出了一个错误。为什么
strtok
返回一个int值?解决方案是什么?

它使用了
strtok
的隐式原型。您需要
#包括
(对于
NULL
,您可能还需要包括
stddef.h
,对于
printf
,您还应该包括
stdio.h

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