C,如何一起使用fgets和fscanf

我有一份大学作业表。 那就是使用文件IO。

有这样的TXT文件:

Brian s213551 50 70 70 50 Alex Fernandes s210011 70 81 50 89 Young Lee s211213 60 80 60 90 ... and more 

我必须读取此文件并保存到var in struct。 和教授 对我说。 我必须一起使用fgets和fscanf。 如果我只使用fscanf它不能正常工作,因为“Alex Fernandes”中有空间。

但即使我一起使用fgets和fscanf,它也不起作用..所以我需要帮助你。

这是我的来源:

 #include  #include  typedef struct sMember{ char name[10]; char id[10]; int score[4]; double avg; char grade; }MEM; int main(int argc, char *argv[]) { MEM member[50]; FILE *f; char fileName[10]; char s[512]; int i; printf("File Name : "); scanf("%s", fileName); fflush(stdin); i=0; if((f = fopen(fileName, "r")) != NULL ) { // while(!feof(f)) while(fgets(member[i].name, sizeof(member[i].name), f) != 0) { fscanf(f, "%s %d %d %d %d", member[i].id, &member[i].score[0], &member[i].score[1], &member[i].score[2], &member[i].score[3]); printf("%s %s %d %d %d %d\n", member[i].name, member[i].id, member[i].score[0], member[i].score[1], member[i].score[2], member[i].score[3]); //printf("t: %s\n", member[i].name); i++; } } else { printf("File is Not Exist.\n"); } fclose(f); system("PAUSE"); return 0; } 

只需在fscanf()参数的末尾添加一个空格即可使用换行符。

 fscanf(f, "%s %d %d %d %d ", member[i].id, &member[i].score[0], &member[i].score[1], &member[i].score[2], &member[i].score[3]);