gpt4 book ai didi

C - 文件处理中未找到记录

转载 作者:行者123 更新时间:2023-11-30 17:58:09 24 4
gpt4 key购买 nike

我有这个C代码,其中我遇到的问题是我无法找到我想要的记录,使用文件处理它总是说没有找到结果。让我的系统清晰工作并显示记录的正确方法是什么?

    #include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdbool.h>
#include <stdlib.h>
#include <windows.h>


void loadMenu();
void addEmployee();
void searchEmployee();
bool found = false;
int choice;

FILE*myrec;

char Name[20],Age[20],IDnum[20],search[20];

void loadMenu(){
printf("[1]Add Employee\t[2]Search Employee\t[3]Exit\nChoice:");
scanf("%d", &choice);
}


void addEmployee (){
char ans;
do{
printf("Enter IDnumber:");
fflush(stdin);
gets(IDnum);
printf("Enter Name:");
fflush(stdin);
gets(Name);
printf("Enter Age:");
fflush(stdin);
gets(Age);

myrec = fopen ("record.txt","a+");
fprintf(myrec,"%s \t %s \t %s \n ",Name,Age,IDnum);
printf("Record Saved !");
printf("Do you want to add another record ? Y/N");
scanf("%s",&ans);
fclose(myrec);
}
while (ans=='Y'||ans=='y');
}


void searchEmployee(){

myrec = fopen("record.txt","a+");
printf("Enter Employee IDnumber:");
scanf("%s",&search);
while(!feof(myrec)){
fscanf(myrec,"%s %s %s",IDnum,Name,Age);
if (strcmp(search,IDnum)==0){
printf("IDnum: %s\n", IDnum);
printf("Name: %s\n",Name);
printf("Age :%s\n",Age);
found = true;
break;

}

}
if(!found) printf("No results.");
fclose (myrec);
}


int main(){
bool repeat = false;
do{
loadMenu();
switch(choice){

case 1:
addEmployee();
break;

case 2:
searchEmployee();
break;

case 3:
repeat = true;
break;
}
}while(!repeat);

getch();
}

我的代码有什么问题吗?

最佳答案

有很多错误。

一些快速的:

  1. 在尝试读取之前,请勿检查 feof(),这是无效的。事实上,永远不要使用 feof(),除非您已经完成了失败的读取。
  2. 如果您只想从文件中读取,请不要以追加("a+")模式打开。该模式支持阅读,但还是很奇怪。
  3. 也许您应该尝试重新打开该文件,而不是一直保持打开状态。
  4. 始终检查 I/O 函数(如 fscan())的返回值。他们可能会失败。

关于C - 文件处理中未找到记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12423662/

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