我很难将用户输入与文件内容进行比较。基本上我创建了一个更新员工详细信息的功能,该功能首先提示输入员工的姓名,然后将输入的名称与文件中的名称进行比较。我试过这样做:
void update(EMPLOYEE *details)
{
FILE *file;
char search;
file = fopen("employees.txt","r");
if(file == NULL)
{
printf("File error!!!");
exit(0);
}
else
{
search = getc(file);
printf("Enter name: ");
scanf("%s",details->name);
if((strcmp(search,details->name) == 0))
{
printf("%s\n",details->name);
printf("%d",details->employeeNumber);
}
}
fclose(file);
}
答案 0 :(得分:3)
您正在比较单个字符search
与(我假设)整个字符串details->name
。
strcmp
的方法签名是:
int strcmp (const char *str1, const char *str2);
您将其称为:
int strcmp (const char str1, const char *str2);
不仅如此,如果你修改它以使其编译,你将会读取你的str1字符缓冲区,除非碰巧是字符0,它不会是。
要解决此问题,您必须执行以下操作之一:
答案 1 :(得分:1)
strcmp
需要一个字符串(char *
)而不是一个字母。正如其他人在评论中提到的那样,您需要更新getc
进程以阅读超过单个字母的内容。
答案 2 :(得分:0)
提示:
EMPLOYEE fileData;
while ( fread( &fileData, sizeof( fileData ), 1, file ) == sizeof( fileData )
{
...
}
编辑:将读取更改为fread,因为它是文件*
HTH