程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-C語言文件一小問題!求大神

c語言-C語言文件一小問題!求大神

編輯:編程綜合問答
C語言文件一小問題!求大神

#include"stdio.h"
#include"stdlib.h"
#define N 3
#define M 4
struct student
{
int num;
char name[20];
int score[M];
}stu[N];
int main()
{
int i,j;
FILE fp;
if((fp=fopen("shuju.txt","wb"))==NULL)
{
printf("文錯誤件打開\n");
exit(0);
}printf("請分別輸入%d同學們的學號、姓名、四個課程成績\n",N);
for(i=0;i<N;i++)
{
printf("請輸入第%d個同學信息:",i+1);
scanf("%d%s",&stu[i].num,stu[i].name);
for(j=0;j<M;j++)
scanf("%d",&stu[i].score[j]);
fwrite(&stu[i],sizeof(struct student ),1,fp);
}
printf("%d個同學的信息已經存入磁盤文件中\n",N);
fclose(fp);
if((fp=fopen("shuju.txt","rb"))==NULL)
{
printf("文錯誤件打開\n");
exit(0);
}
printf("
***********學生的信息是:*************\n");
for(i=0;i<N;i++)
{
fread(&stu[i],sizeof(struct student ),1,fp);
printf("第%d個同學信息:",i+1);
printf("%d\t%s",stu[i].num,stu[i].name);
for(j=0;j<M;j++)
printf("\t%d",stu[i].score[j]);
printf("\n");
fclose(fp);
}
return 0;
}
運行結果
圖片說明
疑問:
圖片說明
第一:為什麼文本(txt)數據是這樣的呢??求解?
第二:能把漢字存進文本文件中去嗎??

最佳回答:


文件定義的是FILE fp? 不應該是FILE *fp麼。。。。

另外您是用二進制方式寫的文件,那麼它將以自己的格式處理文件,所以您看不到原來文件的內容。

如果您想看到內容, 要修改
(1) 寫打開fopen用"w"方式,不用"wb"
(2) 把所有fwrite改為fprintf具體寫什麼您得自己定義
例如fprintf(fp,"%s %d", name, score)之類的,具體格式其實和printf到屏幕一樣,只是fprintf是寫到文件裡了
(3) 讀打開也是"r",別用"rb"
(3) 再讀文件的時候也不能用fread了,要用fscanf(fp,"%s%d");之類, 具體讀什麼也和scanf從鍵盤讀一樣。格式和您寫入的相關。
不能一個結構體那麼讀了,只能和您輸入數據那樣按結構體的字段從文件裡直接讀。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved