C语言 从txt文件无法读取数据



这是第一个将用户数据写入文件

的代码
#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",&reg);
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大小不同。

最新更新