在C语言中从文本文件中删除结构数据
我从用户那里获取输入并存储在一个结构中,然后使用在C语言中从文本文件中删除结构数据,c,function,data-structures,structure,file-handling,C,Function,Data Structures,Structure,File Handling,我从用户那里获取输入并存储在一个结构中,然后使用 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 d
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);
}
编辑:
我没有在readdata中初始化为0。
这是更新的readdata函数:
void readdata()
{
t=0;
file=fopen("Records.txt","r");
while(fread(&a[i],sizeof(a[i]),1,file)==1)
{
i++;
t++;
}
fclose(file);
}
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[]
数组中的条目数 在readdata()
中,为什么两个计数器i
和t
?为什么它们是全球性的?为什么不初始化i
?请求调试帮助时,请务必发布完整的代码集。如果我们不能重现这个问题,我们就不能帮助你解决这个问题。请参阅。根据操作系统的不同,您可能需要在fopen
调用中使用“rb”
和“wb”
。t
是全局变量吗?@johnnymop正如您所说,我在readdata中初始化了I,现在问题已经解决。