如何使用C来追加.txt文件的第一行



我有一个程序,我试图将wind数据添加到.txt文件中,但我面临着添加数据的问题,我关闭了程序,尝试再次添加数据,它消除了其余数据。以下是.txt文件的示例:

3
3.60000 N
4.30000 E
5.40000 S

第一行是数据条目的数量,下面是每个风速,然后是风向。

如果我只添加一次数据并完成它,我的代码就可以正常工作,但如果我想在以前的基础上添加更多的工作,就不行了。我知道我可以使用append将数据添加到末尾,但它不会更新顶部的计数器。我希望能够添加数据并更新顶部的计数器。我需要代码中其他函数的计数器。以下是我的问题代码:

void addWindData(FILE* outFile, int numNumbers, double windSpd[], char windDir[]){
int numItems;

printf("How many data items would you like to add? ");
scanf("%d", &numItems);
fprintf(outFile, "%d n", numItems);
for(int i = 0; i < numItems; i++){
printf("Wind speed? ");
scanf("%lf", &windSpeed[i]);
printf("Wind direction? ");
scanf(" %c", &windDir[i]);
fprintf(outFile, "%lf %c n", windSpd[i], windDir[i]);
}
}

我这样调用函数:

fp = fopen(FILE_NAME, "w");
if(fp == NULL){
printf("File could not be found! n");
}
else{
addWindData(fp, numNumbers, windSpd, windDir);
fclose(fp);
}

我能得到的任何帮助都将不胜感激。我知道"w"总是会写入,但当我使用append时,它会在末尾开始一个新的计数,然后添加数据。我只需要帮我弄清楚如何更新计数器!我对C编程语言还很陌生,现在还在尽我最大的努力学习。我正在尽力运用逻辑和推理,所以这有助于我从别人那里获得灵感!提前谢谢!

文件以流形式打开,因此您有两个选择:更改字符或重写所有文件。您必须知道,您只能更改现有的字符!正如fopen参考所说,要更改字符,您可以使用";r+";模式此模式允许读取/写入,从头开始并允许倒带。

您可以将fp = fopen(FILE_NAME, "w")更改为fp = fopen(FILE_NAME, "r+"),因为w模式会擦除.txt文件中的前一个文本,而r+不会,因为r是升级模式。

最新更新