在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,现在问题已经解决。