[英]C program not writing to text file
所以這是問題所在:
我想在文本文件中寫一些文本,但是遇到了一些奇怪的情況:
int main()
{
FILE *file = fopen("structures.txt", "a+"); // open the file for reading & writing
int choice = 0;
if(file == NULL)
puts("Unable to open text file");
else {
do {
scanf("%d", &choice);
fprintf(file, "This is testing for fprintf...\n");
}while(choice > 0);
}
fclose(file);
return 0;
}
在此版本的程序中,沒有任何內容寫入文本文件,我也不明白為什么。 但是對我來說最奇怪的是:
int main()
{
FILE *file = fopen("structures.txt", "a+"); // open the file for reading & writing
int choice = 0;
if(file == NULL)
puts("Unable to open text file");
else {
do {
scanf("%d", &choice);
fprintf(file, "This is testing for fprintf...\n");
fclose(file); // Added this line, the writing works
}while(choice > 0);
}
fclose(file);
return 0;
}
添加fclose(file);
直接在fprintf
調用之后,程序成功寫入:
這是測試fprintf ...
到文本文件。
我的問題是:
這是否意味着每當我想向其中寫入文本並隨后直接將其關閉時,都必須打開文本文件?
fclose()
與編寫過程有關系嗎?
是什么因素導致fprintf()
無法正常工作? (第一個樣本)
在程序開始時和結束時,如何才能一次打開和關閉文本文件(分別),以確保我的程序可以正常運行?
這是否意味着每當我想向其中寫入文本並隨后直接將其關閉時,都必須打開文本文件?
不,但是這可能意味着您需要先關閉文件,然后才能將寫入的內容實際清空並寫出到文件中。
fclose()與編寫過程有關系嗎?
大多數文件流都被緩沖。 意思是每次寫到內存。 在緩沖區已滿或調用close之前,它不會寫入磁盤。
是什么因素導致fprintf()無法正常工作? (第一個樣本)
您發現任何嚴重錯誤。
在程序開始時和結束時,如何才能一次打開和關閉文本文件(分別),以確保我的程序可以正常運行?
您可以調用fflush()
類的東西。 但是,您確定嘗試過此方法,即使最后最后關閉了文件,文件也沒有任何內容嗎?
我使用int fflush (FILE *stream)
(@Jonathan暗示了)解決了這個問題。
在緩沖流上刷新輸出意味着將所有累積的字符傳輸到文件。 在許多情況下,流中的緩沖輸出會自動刷新:
當您嘗試執行輸出並且輸出緩沖區已滿時。
流關閉時。
當程序通過調用exit終止時。
寫入換行符時,如果流是行緩沖的。
每當任何流上的輸入操作實際從其文件中讀取數據時。
所以基本上,我只需要在調用fprintf()
之后再調用fflush()
fprintf()
:
fprintf(file, "This is testing for fprintf...\n");
fflush(file);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.