下面程序是一个从键盘输入数据到文件file2.txt中,再从屏幕中显示file2.txt中的内容。
运行之后我从键盘输入:
zhang 1001 13 room_1
wu 1002 14 room_2
liu 1003 15 room_3
qing 1004 16 room_4
之后屏幕上也显示:
zhang 1001 13 room_1
wu 1002 14 room_2
liu 1003 15 room_3
qing 1004 16 room_4
但是我打开我保存的文件file2.txt却显示:
zhang ?
room_1 wu ? room_2 liu ? room_3 qing ? room_4
我就不明白为什么整型的就显示乱码,字符型的就可以显示出来?
程序如下:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 4
struct student_type
{
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void main()
{
void save();
int i;
FILE *out;
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((out=fopen("file2.txt","rb"))==NULL)
printf("cannot open the file!\n");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct student_type),1,out);
printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
fclose(out);
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("file2.txt","wb"))==NULL)
{printf("cannot open the file!\n");
exit(0);
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
请教一个文件输入输出问题