这是我的代码
#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," ");
}
}
}
这是我收到的警告。
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," ");
^
The word
被声明为char*
。那为什么会出现这个警告呢?
Include #include <string.h>
获得原型strtok()
.
您的编译器(如 C99 之前的 C)假设strtok()
返回一个int
因为这个。但不提供函数声明/原型在现代 C 中是无效的(自 C99 起)。
C 中使用了一条允许隐式函数声明的旧规则。但隐式整型规则自 C99 起已从 C 语言中删除。
See: C 函数调用:理解“隐式 int”规则 https://stackoverflow.com/q/8220463/1275169
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)