我从用户处获取输入并存储在结构中,然后使用]将其写到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函数:
我没有在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); }
如果您需要完整的代码:fullcode
我从用户处获取输入并存储在结构中,然后使用fwrite(&a [i],sizeof(a [i]),1,file)将其写入txt文件;现在我要做的是删除结构的特定索引数据...
变量t
,全局变量,是数组a[]
中的偏移量(从0开始)。