这是第一个将用户数据写入文件
的代码#include<stdio.h>
#include<conio.h>
void main()
{
FILE *fpr;
char ch='y';
struct student
{
int reg;
char name[50],remarks[10];
};
struct student a;
fpr=fopen("recstruct.txt","wb");
if(fpr==NULL)
{
printf("file does not exist");
}
while (ch=='y')
{
printf("enter the register number ,name and remarks:n");
scanf("%d",&a.reg);
scanf("%s",&a.name);
scanf("%s",&a.remarks);
fwrite(&a,sizeof(a),1,fpr);
printf("do you want to add more record (y/n):n");
ch=getche();
printf("nn");
}
fclose(fpr);
}
我给的输入是:
1
charana
pass
y
2
charana
pass
,正常运行,但文本文件被保存为以下格式:
charana Ð>* ùjö pass charana
Ð>* ùjö pass
第二个程序是读取用户定义的注册号码从保存的文本文件,然后显示特定的注册号码的详细信息如名称和评论。
#include<stdio.h>
void main()
{
struct studentdata
{
int reg;
char name[50],remarks[50];
}a;
int reg,flag=0;
char name;
FILE * fpr;
fpr=fopen("recstruct.txt","rb");
if(fpr==NULL)
{
printf("file does not exist");
}
printf("enter the registration number:n");
scanf("%d",®);
while(fread(&a,sizeof(a),1,fpr)>0 && flag==0)
{
if (a.reg==reg)
{
flag=1;
printf("record foundn");
printf("student name:%s registration number: %dt remarks:%s",a.name,a.reg,a.remarks);
}
}
if (flag==0)
{
printf("record not found");
}
fclose(fpr);
}
但是程序返回&;not found&;对于除第一行数据以外的任何用户输入
enter the registration number:
2
record not found
我不知道问题在哪里,是第一个程序还是第二个程序。请帮我解决同样的问题。
你结构用于阅读和写作是不同的大小:
struct student
{
int reg;
char name[50],remarks[10];
};
与
struct studentdata
{
int reg;
char name[50],remarks[50];
}a;
具体来说,remarks
大小不同。