首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

向磁盘资料写入数据为什么打开文件后显示乱码

2012-11-04 
向磁盘文件写入数据为什么打开文件后显示乱码啊有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包

向磁盘文件写入数据为什么打开文件后显示乱码啊
有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号、姓名、3门课程),计算平均成绩,将原有数据和计算出的平均分数存放在磁盘文件‘stud’中。
书上的习题 很简单 可是就是搞不对啊 不知道错哪里了。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3
struct student
{
int num;
char name[10];
float score[3];
}stud[SIZE];
main()
{
  FILE *fp;
int i,j;
float aver[3],sum;
printf("请输入 学号 姓名 分数!\n");
for (i=0;i<SIZE;i++)

sum=0;
scanf("%d %s",&stud[i].num,stud[i].name);
   
  for (j=0;j<3;j++)
  {
scanf("%f",&stud[i].score[j]);
sum+=stud[i].score[j];
  }
aver[i]=sum/3;
printf("%f\n",aver[i]);
}
   
if ((fp=fopen("stud.txt","wb"))==NULL) /*wb为读写建立一个新的二进制文件*/
{
printf("cannot open the file!");
exit(0);
}

  /*将原始数据和平均分数存放到磁盘文件stud.txt*/

for (i=0;i<SIZE;i++)  
{
  if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
  }
fclose(fp);
}


[解决办法]

C/C++ code
if ((fp=fopen("stud.txt","wb"))==NULL) /*wb为读写建立一个新的二进制文件*/if(fwrite(&stud[i],sizeof(struct student),1,fp)!=1)
[解决办法]
还要注意字符本身的编码,和系统环境变量或者GUI现实编码
[解决办法]
探讨

文件中不能看二进制 文件么 不是很清楚啊

[解决办法]
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

热点排行