我做了一个程序,它将一个结构存储在一个文件中,但是输出与我预期的不同,看看,
/*
Students DataBase Program
Date:9th Dec,2010
Topic:Data base in C.
*/
#include <stdio.h>
int main()
{
struct student
{
char name[20];
int e_no;
}stud;
char temp[20],ch;
FILE *fp;
clrscr();
fp=fopen("D:\data1.txt","w+");
gotoxy(28,5);
printf("\nNED CIS ENROLMENT DATABASE\t");
do
{
gotoxy(28,10);
printf("\nEnter name of the student:\t");
gets(stud.name);
gotoxy(27,12);
printf("\nEnter your enrolment number:\t");
gets(temp);
atoi(temp,stud.e_no,10);
fwrite(&stud,sizeof(stud),1,fp);
printf("\nWant to enter another record?[y/n]");
ch=getche();
}
while(ch=='y'||ch=='Y');
getchar();
fclose(fp);
return 0;
}
输出应该是学生的姓名和注册号,但这里是我每次输入任何数据时得到的输出类型。
文件输出:
慦慨d@〃݅@赅㈃愀慨d@〃݅@赅㈃
最佳答案
两件事:
不要使用gets
。它容易发生缓冲区溢出。
如果希望文件中的数据采用ascii格式,则可能需要执行以下操作
fprintf(fp,“%s:%d\n”,stud.name,stud.e_no);
否则,它将打印数据的二进制表示形式(不可读和不可传输)。