问一些问题,希望能有大佬解答
首先,我想在程序运行的同时对程序内的数据进行更改。整么想的原因是在程序中对数据文件进行了更改,使原本有7条数据的文件变成6条,但在再次运行程序后在读取数据时仍然以7条为上限进行读取导致读取失败,所以我想让程序可以自动修改程序中代表数据数量的变量的值,下面截取了一段相关代码
struct A
{
char idnum[20];
char name[10];
char gender[2];
double money;
char passworld[5];
}a[10];
FILE *fp;
int i=0,flag,dataA;
char t;
fp=fopen("datanum.txt","r");
for (i=0;i<dataA&&!feof(fp);i++)
{
int ret=fscanf(fp,"%s%s%s%lf%s",a[i].idnum,a[i].name,a[i].gender,&a[i].money,a[i].passworld);
if (ret!=5)
{
printf("读取文件A失败\n");
return 1;
}
}
fclose(fp);
然后我想到的解决方法就是再建立一个文件用来记录数据文件中数据的数量,在程序开头读入,在程序结尾再把经过增减后的数据数量写入这个记录文件,但是这又出来一个新的问题,就是在读取A数据文件时,数据数量是可以争取读入的,但读取B数据文件时却出现错误,无法读入,下面截一段
fp=fopen("datanum.txt","r");
fscanf(fp,"%c",&t);
if(t=='A') fscanf(fp,"%d",&dataA)
fscanf(fp,"%c",&t)
if(t=='B') fscanf(fp,"%d",&dataB)
fclose(fp);
而统计文件的内容是
A 7
B 7
即便我将两行数据变成一行仍然不行,t在读取B时总是读取不了,在fscanf(fp,"%c",&t)输出t会发现什么都没有输出,不知道为什么,真的搞不懂了QAQ
另外再问一下该怎么在程序中做出返回上一个选择的操作,我室友说用goto,但高中的教导让我不能用goto,像请教一下大佬有没有其他办法
首先,我想在程序运行的同时对程序内的数据进行更改。整么想的原因是在程序中对数据文件进行了更改,使原本有7条数据的文件变成6条,但在再次运行程序后在读取数据时仍然以7条为上限进行读取导致读取失败,所以我想让程序可以自动修改程序中代表数据数量的变量的值,下面截取了一段相关代码
struct A
{
char idnum[20];
char name[10];
char gender[2];
double money;
char passworld[5];
}a[10];
FILE *fp;
int i=0,flag,dataA;
char t;
fp=fopen("datanum.txt","r");
for (i=0;i<dataA&&!feof(fp);i++)
{
int ret=fscanf(fp,"%s%s%s%lf%s",a[i].idnum,a[i].name,a[i].gender,&a[i].money,a[i].passworld);
if (ret!=5)
{
printf("读取文件A失败\n");
return 1;
}
}
fclose(fp);
然后我想到的解决方法就是再建立一个文件用来记录数据文件中数据的数量,在程序开头读入,在程序结尾再把经过增减后的数据数量写入这个记录文件,但是这又出来一个新的问题,就是在读取A数据文件时,数据数量是可以争取读入的,但读取B数据文件时却出现错误,无法读入,下面截一段
fp=fopen("datanum.txt","r");
fscanf(fp,"%c",&t);
if(t=='A') fscanf(fp,"%d",&dataA)
fscanf(fp,"%c",&t)
if(t=='B') fscanf(fp,"%d",&dataB)
fclose(fp);
而统计文件的内容是
A 7
B 7
即便我将两行数据变成一行仍然不行,t在读取B时总是读取不了,在fscanf(fp,"%c",&t)输出t会发现什么都没有输出,不知道为什么,真的搞不懂了QAQ
另外再问一下该怎么在程序中做出返回上一个选择的操作,我室友说用goto,但高中的教导让我不能用goto,像请教一下大佬有没有其他办法