#define MES (struct studentMessage *)malloc(sizeof(struct studentMessage));//定義結(jié)構(gòu)體typedef struct studentMessage{char name[15]; //姓名int id; //學(xué)號char sex[7]; //性別char collage[20]; //學(xué)院int Class; //班級struct studentMessage *next; //鏈表指針}MESSAGE;void savefilestu(MESSAGE *head){int i;FILE *fp=NULL;char q[20];MESSAGE *p;printf("請輸入您要保存的文件名:");scanf("%s",q);fp=fopen(q,"w");p=head;for(;p;p=p->next) fwrite(p,sizeof(struct studentMessage),1,fp);fclose(fp);fp=fopen(q,"r");p=MES;p->next=NULL;for(;!feof(fp);){fread(p,sizeof(struct studentMessage),1,fp);outputstu(p);}fclose(fp);printf("已將信息保存到%s文件中!\n",q);printf("按任意鍵返回\n");getch();}經(jīng)過測試,每次fwrite都多寫一個數(shù)據(jù)(數(shù)值跟最后一個一樣)但是在這個函數(shù)讀取文件沒問題,在其他地方讀取文件時前面的正常,多寫那個是亂碼。求解決方法。。。。在這個函數(shù)里fread會讀出多余的那個數(shù)據(jù),數(shù)值跟最后一個一樣。在其他地方里讀出來的結(jié)果是前面正常最后多余那個為亂碼。曾經(jīng)設(shè)定fwrite的循環(huán)只進行一次,結(jié)果還是寫了兩個。如果在for里fwrite語句后直接加break,只寫一個數(shù)據(jù),為亂碼。。。。 回二樓,改為wb,rb失敗。其他方面我確定沒問題因為這是個模擬信息管理系統(tǒng),之前其他函數(shù)使用鏈表一直沒錯
這里不太了解,為什么fwrite函數(shù)老多寫一個呢?
阿波羅的戰(zhàn)車
2021-10-20 19:15:01