学生信息文件处理

你可以帮我改进我的代码……这都是关于学生的信息…我在语法方面有困难…在编辑菜单中…我尝试使用strcmp但没有任何反应,我首先使用fgets并存储它在一个数组,然后要求用户输入并将其再次存储在另一个数组..然后我会比较…但它不起作用..希望你能帮助我…这是我的代码。 。

#include  #include  #include  struct student{ char name[30]; char id[8]; char course[5]; }; int main(void){ int option =0; while(option!=6){ system("cls"); printf("Menu:\n"); printf("[1] Add Student.\n"); printf("[2] Display Student.\n"); printf("[3] Delete Student.\n"); printf("[4] Delete Student.\n"); printf("[5] Exit.\n"); scanf("%d",&option); switch(option) { case 1: addStudent(); break; case 2: displayinfo(); break; case 3: break; case 4: break; default: printf("That is not in the options!\nPlease Try again!\n"); break; } } } addStudent(){ int i; FILE *stream = NULL; stream = fopen("studentinfo.txt", "a+"); struct student s1; struct student array[3];//here i wnt 2 apply d malloc but, still didn't know how 2start for (i =0; i<1; i++){ printf("Enter Student ID: "); scanf("%s", s1.id); fflush(stdin); printf("Enter Student Name: "); gets(s1.name); fflush(stdin); printf("Enter Student Course: "); scanf("%s", s1.course); fprintf(stream, "\n%s,\t%s,\t%s", s1.id, s1.name, s1.course); } fclose(stream); getch(); } displayinfo(){ FILE *stream = NULL; stream = fopen("studentinfo.txt", "rt"); char arr[100]; int i=0; while(!feof(stream)){ fgets(arr, 100, stream); printf("%s", arr); } fclose(stream); getch(); } 

这是我在编辑菜单中的计划:

  printf("enter details: "); gets(arr2); while(!feof(stream)){ fgets(arr, 100, stream); if(strcmp(arr, arr2)==0){ //code here } } 

这会有用吗?

谢谢你们希望你能帮助我^ _ ^

fgets()保留换行符。 gets()没有。 因此字符串永远不会匹配。

如果您不完全确定它正在做什么,请尝试阅读该function的手册。

而不是gets(arr2)尝试做fgets(arr2, 100, stdin)

 while(!feof(stream)){ fgets(arr, 100, stream); 

使用

 while(fgets(arr, 100, stream) != NULL) { ... } if (ferror(stream)) printf("error in file" "\n"); 

feof()在读取时不会看到错误,因此它可能会挂起循环