【发布时间】:2020-01-09 21:36:31
【问题描述】:
我正在尝试从文件中读取非特定数量的整数对。我还想跳过以 # 开头的行。我的问题是什么都没有打印出来。当我尝试打印 fgets 返回的值时,它打印出 null。我真的很感激一些帮助,因为我对 C 不是很有经验,如果你不关注 feof,我将非常感激,因为我已经阅读了为什么 feof 不好。
文件如下所示:
#This must
#be
#skipped
1233 14432
4943928 944949
11233 345432
代码是:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
int start;
int end;
}path;
int main()
{
path* array;
array=malloc(5*sizeof(path));
if(array==NULL){
printf("Error allocating memory\n");
abort();
}
FILE* fd=fopen("File.txt","r");
if(fd==NULL){
printf("Error opening file\n");
abort();
}
char buff[200];
int counter=0;
if(fopen==NULL){
printf("Error opening file\n");
abort();
}
char c;
while(!feof(fd)||counter==6){
fgets(buff,200,fd);
c=buff[0];
if(strcmp(buff[0],"#")){
continue;
}
sscanf(&buff,"%d %d",array[counter].start,array[counter].end);
printf("%d\t%d\n",array[counter].start,array[counter].end);
counter++;
}
fclose(fd);
free(array);
return 0;
}
【问题讨论】:
-
这个语句 if(fopen==NULL){ 或者这个 if(strcmp(buff[0],"#")){ 没有意义。
-
counter == 6应该是counter < 5 -
在哪里查看
fgets()的值? -
Azzarian “如果您不关注 feof,我将非常感激,因为我已经阅读了为什么 feof 不好”,这会适得其反,因为
while(!feof(fd) ...是一个重要的问题的一部分。考虑修复它并查看编译器警告。