从C中的文本文件中删除结构数据



我从用户那里获得输入并存储在一个结构中,然后使用将它们写入txt文件

fwrite(&a[i],sizeof(a[i]),1,file);

现在我要做的是删除存储在文件中的结构的特定索引数据。这是我试着做的。

void deletespecific()
{
int delroll;
printf("ENTER THE ROLL NUMBER TO DELETE: ");
scanf("%d",&delroll);
readdata();  //reads all data stored in the file
file=fopen("Records.txt","w");
for (int w=0;w<t;w++)
{
if(a[w].roll!=delroll)
{
fwrite(&a[w],sizeof(a[w]),1,file);
}
}
fclose(file);
printf(Green"DATA SUCCESSFULLY DELETED!n"Reset);
}

我首先将存储在文件中的所有数据读取到结构中,然后仅当卷不等于要删除的卷时才将它们写入文件。

我遇到的问题是,每次运行函数"deletespecific"时,它都会删除最后一个索引数据

这只是readdata函数:

void readdata()
{
t=0;
file=fopen("Records.txt","r");
while(fread(&a[i],sizeof(a[i]),1,file)==1)
{
i++;
t++;
}
fclose(file);
}

编辑:我没有在readdata中将I初始化为0。这是更新的读取数据功能:

void readdata()
{
i=0;
t=0;
file=fopen("Records.txt","r");
while(fread(&a[i],sizeof(a[i]),1,file)==1)
{
i++;
t++;
}
fclose(file);
}

如果您需要完整的代码:全码

全局变量t是数组a[]的偏移量(以0开头(。

因此,它的'内容比a[]数组中的项数少1,而不是比a[]数组中的项数少1。

最新更新