【发布时间】:2014-04-27 15:53:29
【问题描述】:
我有一个名为 Empdata.txt 的文件,其字段为“(%s)id,(%s)name,(%d)salary”。首先,我正在向它插入一些值。现在我想更新与用户给出的具有相同 ID 的记录。我正在使用此代码:
struct employee
{
char id[100];
char name[100];
int sal;
};
int main()
{
FILE *ptr;
struct employee e;
ptr=fopen("Empdata.txt","w+");
printf("Enter Employee id");
scanf("%s",id);
while(!feof(ptr))
{
fread(&e,sizeof(e),1,ptr);
if(strcmp(id,e.id)==0)
{
printf("Enter name");
scanf("%s",e.name);
printf("Enter basic salary");
scanf("%d",&e.sal);
fwrite(&e,sizeof(e),1,ptr);
}
};
fclose(ptr);
}
但它与 id 不匹配。所以它甚至没有更新。此外,我还必须执行删除操作。我不知道如何删除具有特定 ID 的记录。 请假设所有变量都已正确初始化。
【问题讨论】:
-
尝试在以后的问题中缩进你的代码。它使阅读代码变得容易 100 倍。
-
您没有从文件中读取任何内容。您只需打开它,然后(错误地)检查 eof 几次,然后将其关闭。还不如根本没有任何文件。
-
有几种模式?
fopen的文档对他们每个人都有什么看法? -
我不是要检查你的知识,我是在告诉你从哪里开始挖掘。