struct student
{
int num;
char name[15];
int score[M];
float avg;
};
這是定義的結構體
下面是檔案
void file()
{
int i,j,n;
FILE *fp;
fp=fopen("D:\\cj.txt","w");
if(fp==NULL)
{
printf("不能打開檔案!\n");
exit(1);
}
for (i=0;i<N;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("D:\\cj.txt","rb");
if(fp==NULL)
{
printf("不能打開檔案!\n");
exit(1);
}
/*printf("請輸入學生的序號:");
scanf("%d",&n);
printf("你輸入的學號是:%d",n);
printf("找到的學生資訊如下:\n");
fseek(fp,(n-1) * sizeof(s),0);
fread(&s,sizeof(s),1,fp);
printf("%d%s%d%d%d%f",s.num,s.name,s.score[0],s.score[1],s.score[2]);*/
}
編譯后txt檔案中是亂碼,然后順便幫我看看/**/中的錯誤,謝謝
uj5u.com熱心網友回復:
這個不是亂碼,你是按照二進制方式寫的檔案,如果按照文本檔案方式讀寫檔案,可以參考https://blog.csdn.net/zhanghaiyang9999/article/details/107032563
uj5u.com熱心網友回復:
如果不想“亂碼”,建議用fscanf/fprintf讀寫檔案。注釋掉的部分s未定義,n輸入若為0,那這個是有問題的。
uj5u.com熱心網友回復:
具體要怎么改呢,不是特別懂
uj5u.com熱心網友回復:
具體怎么改可以稍微寫一下嗎,不是特別懂,謝謝
uj5u.com熱心網友回復:
fp=fopen("D:\\cj.txt","w"); 要用二進制讀,這里得用二進制寫 fp=fopen("D:\\cj.txt","wb");轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/32499.html
標籤:C語言
上一篇:請問std::queue 在一讀一寫場景下執行緒安全嗎?
下一篇:求助大佬
