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

问题描述 投票:0回答:1

我从用户处获取输入并存储在结构中,然后使用]将其写到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中将其初始化为0。这是更新的readdata函数:
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);
}

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

我从用户处获取输入并存储在结构中,然后使用fwrite(&a [i],sizeof(a [i]),1,file)将其写入txt文件;现在我要做的是删除结构的特定索引数据...

c function data-structures structure file-handling
1个回答
0
投票

变量t,全局变量,是数组a[]中的偏移量(从0开始)。

© www.soinside.com 2019 - 2024. All rights reserved.