gpt4 book ai didi

c 程序。将记录添加到文本文件中的问题

转载 作者:行者123 更新时间:2023-11-30 19:46:10 24 4
gpt4 key购买 nike

我在顺序访问文件中添加新记录时遇到一些问题。当用户输入型号代码时,程序应该检查它,如果发现重复项,则显示已存在同名条目。当我运行我的代码时,它只显示:

Record already exists
Record already exists
Record already exists
Record already exists

何时:1.代码存在于文件中2.文件中不存在该代码。

有人可以帮我解决这个问题吗?任何帮助将不胜感激。

//function to add record
void stockEntry(){

FILE *fp;
fp = fopen("stock.txt","a+");

//fopen opens file.Exit program if unable to create file
if(fp==NULL){
puts("File could not be opened");
}//ends if

//obtains information from user
else{
printf("\nEnter model code,model name,cost,price and quantity(Use space to separate inputs)\n");
scanf("%s %s %f %f %d",code,a.name,&a.cost,&a.price,&a.quantity);

rewind (fp);
do{
if(strcmp(code,a.code)!=0){
//write details into stock.txt
fprintf(fp,"%s %s %.2f %.2f %d\n",a.code,a.name,a.cost,a.price,a.quantity);
}
else{
printf("Record already exists\n");
}

}while(fscanf(fp,"%s %s %f %f %d\n",a.code,a.name,&a.cost,&a.price,&a.quantity)==5);
}
//fclose closes file
fclose(fp);
}

最佳答案

您正在使用 do...while 循环,它将比较之前的数据已从文件中读取任何内容;第一次通过,你是与 a.code 的旧值进行比较。另外,您正在将数据写入文件的中间,我看不到所有记录都相同的保证长度。

此外,您还使用 a 来保存从用户那里获得的数据,以及从文件中读取的数据。您需要两个结构,每个结构一个目的。

我不知道为什么它总是给你记录已经存在,但是一个循环这样应该会给你你想要的结果。 (我没有编译或测试一下,这就是我的想法。)

int exists;
struct ... curr;
...
scanf("%s %s %f %f %d", curr.code, curr.name, &(curr.cost),
&(curr.price), &(curr.quantity));

exists = 0;
rewind(fp);

while (fscanf(fp, "%s %s %f %f %d\n",
a.code, a.name, &(a.cost), &(a.price), &(a.quantity)) == 5) {
if (strcmp(curr.code, a.code) == 0) {
printf("Record already exists\n");
exists = 1;
break;
}
}

/* At this point, either exists == 1, in which case we're at an unknown
point in the file and wish to do nothing, or exists == 0, in which
case we're at the end of the file and wish to write a new record. */

if (exists)
fprintf(fp, "%s %s %.2f %.2f %d\n",
curr.code, curr.name, curr.cost, curr.price, curr.quantity);

关于c 程序。将记录添加到文本文件中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24382377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com