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

fwrite函数的有关问题

2012-03-05 
fwrite函数的问题不知道下面这个程序是不是谭书P138印刷错了还是我抄错了(我对照了4,5偏没发现和书上有什

fwrite函数的问题
不知道下面这个程序是不是谭书P138印刷错了还是我抄错了(我对照了4,5偏没发现和书上有什么不同啊),怎么运行后输入的学号和年龄送到文件里是乱码呢
#include   <stdio.h>
#define   SIZE   4
struct   student_type
{char   name[10];
int   num;
int   age;
char   addr[15];
}stud[SIZE];

void   save()
{FILE   *fp;
int   i;
if((fp=fopen( "stu_list ", "wb "))==NULL)
  {printf( "can   not   open   file\n ");
return;
  }
for(i=0;i <SIZE;i++)
  if(fwrite(&stud[i],sizeof(struct   student_type),1,fp)!=1)
      printf( "file   write   error\n ");

fclose(fp);
}

main()
{int   i;
for(i=0;i <SIZE;i++)
  scanf( "%s%d%d%s ",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
  save();
}

[解决办法]
if((fp=fopen( "stu_list ", "w "))==NULL) //w 文本方式操作文件
{
printf( "can not open file\n ");
return;
}
for(i=0;i <SIZE;i++)
fprintf(fp, "%s %d %d %s ",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
[解决办法]
虫子说的很对
用fwrite 和fread对应,以wb写入,就要以rb读出
但是由于他们是出来二进制的,所以查看文件中的内容会有乱码,但读出来没有错
按照lz的代码写了个put() 显示到屏幕上
#include <stdio.h>
#define SIZE 4
struct student_type
{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];

void save()
{FILE *fp;
int i;
if((fp=fopen( "stu_list.txt ", "wb "))==NULL)
{printf( "can not open file\n ");
return;
}
for(i=0;i <SIZE;i++)
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf( "file write error\n ");

fclose(fp);
}
void open()
{
FILE *fp;
int i;
if((fp=fopen( "stu_list.txt ", "rb "))==NULL)
printf( "can not open file\n ");

for(i=0;i <SIZE;i++)
if(fread(&stud[i],sizeof(struct student_type),1,fp)==1)
printf( "%s %d %d %s\n ",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);

fclose(fp);
}
int main()
{int i;
for(i=0;i <SIZE;i++)
scanf( "%s%d%d%s ",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
save();
open();
return 0;
}
-------------
gcc下ok

热点排行