这是我的代码
#include<stdio.h>
#include<stdlib.h>
void main() {
FILE *fp;
char * word;
char line[255];
fp=fopen("input.txt","r");
while(fgets(line,255,fp)){
word=strtok(line," ");
while(word){
printf("%s",word);
word=strtok(NULL," ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的警告.
token.c:10:7: warning: assignment makes pointer from integer without a cast [enabled by default]
word=strtok(line," ");
^
token.c:13:8: warning: assignment makes pointer from integer without a cast [enabled by default]
word=strtok(NULL," ");
^
Run Code Online (Sandbox Code Playgroud)
该word声明为char*.那为什么会出现这个警告呢?
P.P*_*.P. 10
包括#include <string.h>获取原型strtok().
您的编译器(如在C99 C之前)假定strtok()返回一个int因为这个.但是不提供函数声明/原型在现代C中是无效的(自C99起).
在C中使用了一个旧规则,它允许隐式函数声明.但是自C99以来,隐式int规则已从C语言中删除.