[英]C - Append on 2nd line of file
我試圖在我的txt文件的第二行上追加。 我想要的txt文件格式如下:
1 2 3 4 5
1.2 3.5 6.4 1.2 6.5
基本上,我想在文件的前兩行追加。
void write_stats(int tries, int num_letters, int tries_sucess)
FILE *stats;
stats = fopen("C:\\Users\\rjmal\\Documents\\CLION PROJECTS\\JogoDaForca\\stats.txt", "a");
if(stats == NULL)
{
printf("can't open file\n");
exit(0);
}
fprintf(stats," %d\n",tries);
fprintf(stats," %f",(float)tries_sucess/num_letters);
fclose(stats);
}
如何在每次運行程序時不在文件上添加新行的情況下做到這一點?
使用我編寫的代碼,我得到如下信息:
1
3 1.5
1 2.3
由於在計算機中考慮文件和行的方式,因此無法按需垂直打印。 相反,您可以做的是將所有這些數字(即, 嘗試 AND (float)tries_sucess / num_letters )存儲在兩個數組中,並按此順序在同一行上打印每個數組的內容。 實際上,這將在打印和格式化所需內容之前緩沖您的內容。
這樣,您可以將所有數據打印到兩行中,每行現在對應於一個數組。
另外,您可以創建兩個char數組並將其視為實際的字符串緩沖區,並使用sprintf記錄到其中。 然后,一旦完成,就可以通過單個fprintf調用打印每個char數組。
假設您創建了兩個足夠長的char數組,下面是新的write_stats的示例代碼。 現在,它僅用於將統計信息記錄到兩個緩沖區中。
void write_stats(int tries, int num_letters, int tries_sucess, char* buffer1, char* buffer2)
{
sprintf(buffer1 + strlen(buffer1)," %d\n",tries);
sprintf(buffer2 + strlen(buffer2)," %f",(float)tries_sucess/num_letters);
}
請注意,您需要使用0初始化緩沖區,以便像我一樣容易使用strlen函數。 另外,最終(即,當您完成調用write_stats時)需要在定義buffer1和buffer2的塊中調用fprintf,如下所示。
FILE *stats;
stats = fopen("C:\\Users\\rjmal\\Documents\\CLION PROJECTS\\JogoDaForca\\stats.txt", "a");
if(stats == NULL)
{
printf("can't open file\n");
exit(0);
}
fprintf(stats,"%s\n%s", buffer1, buffer2);
fclose(stats);
由於有很多細節需要牢記,因此我認為最好是在工作中看到這個想法。 請參閱此處以了解有效的實現方式,並附上一些注釋以幫助詳細說明一些細節。 您可能會看到,給定的輸出是水平的,分為兩行,如您所描述的和下面給出的。
1 3 13 55 233
2.000000 1.600000 1.619048 1.617978 1.618037
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.