簡體   English   中英

無法在 C 程序中寫入文件

[英]Cannot write to file in C program

我正在嘗試將結果寫入輸出文件,並在 Mac 終端上運行此 C 程序。 我已經通過直接寫入終端來檢查程序的所有部分是否正常工作,但是當我嘗試寫入文件時,沒有任何反應。

“寫入文件”行在每次迭代時寫入,但 outputdata.txt 文件沒有任何反應。

我已經更改了權限,並且可以直接從終端寫入此文件。 但是,使用以下代碼不起作用。

#define OUTPUTFILE "outputdata.txt"

FILE *ofp;

char ofile_name[50] = OUTPUTFILE;

ofp = fopen(ofile_name, "r");

for (p = 1; p <= NumPattern ; p++) {
    for (k = 1 ; k <= numnodes_out ; k++) {
        fprintf(ofp, "%f\n", output_nodes[p][k]);
        fprintf(stdout, "Writing to file\n");
    }
}
fclose(ofp);

您正在以讀取模式打開文件,請參閱https://linux.die.net/man/3/fopen

如果要寫入文件,則必須使用支持寫入的模式打開文件,例如: fopen(ofile_name, "w")

如果您只想寫入文件,您的主要選擇是:

  1. “w”,如果文件不存在,它將創建文件,否則它會將文件截斷為 0 長度(刪除文件中的所有內容)並允許您寫入; 或者,
  2. “a”,將附加到現有文件的末尾。

此外,如果您查看前面提到的鏈接,您應該注意到如果文件未成功打開,該函數可能會返回 null。 因此,在對其進行操作之前,您應該檢查 fopen 返回的 FILE* 是否不為空。

#define OUTPUTFILE "outputdata.txt"

FILE *ofp;

char ofile_name[50] = OUTPUTFILE;

ofp = fopen(ofile_name, "r");

if (ofp) { // NOTE: added NULL check.
    for (p = 1; p <= NumPattern ; p++) {
        for (k = 1 ; k <= numnodes_out ; k++) {
            fprintf(ofp, "%f\n", output_nodes[p][k]);
            fprintf(stdout, "Writing to file\n");
        }
    }
    fclose(ofp);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM