我尝试执行我的代码,但我似乎得到了这个不兼容的警告。
enter code here
int Read_Data_File(void)
{
FILE *ptr_file;
char *end = "0.0.0.0 none";
char *buf;
int endLoop = 0;
ptr_file = fopen("CS222_Inet.txt", "r");
if (!ptr_file)
return 1;
int i = 0;
while (!feof(ptr_file)){
addr[i]=(struct address_t *)malloc(sizeof(struct address_t));
fscanf(ptr_file,"%s",buf);
if(!(strcmp(buf, end) == 0)){
fscanf(buf,"%d %d %d %d %s", &addr[i]->IP1, &addr[i]->IP2, &addr[i]->IP3, &addr[i]->IP4, addr[i]->name);
n++;
}
i++;
}
fclose(ptr_file);
return 0;
}
我希望这个程序读取文件,并将我的结构类型存储到我的buf指针中。
警告输出: project.c:65:11:警告:将'char *'传递给的不兼容指针类型 'FILE *'类型的参数(又名'struct __sFILE *') [-Wincompatible指针类型] fscanf(buf,“%d%d%d%d%s”,& addr [i] - > IP1,& add ... ^ ~~ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h:250:30:注意: 在这里将参数传递给参数 int fscanf(FILE * __restrict,const char * __restrict,...)__scanf ... ^
答案 0 :(得分:0)
就像错误一样:fscanf
期望它的第一个参数是FILE *
,而你传递的是字符缓冲区。
如果要使用scanf
函数族解析字符缓冲区,请使用sscanf