開啟並寫入檔案

#include <stdio.h>   /* for perror(), fopen(), fputs() and fclose() */
#include <stdlib.h>  /* for the EXIT_* macros */
 
int main(int argc, char **argv)
{
    int e = EXIT_SUCCESS;

    /* Get path from argument to main else default to output.txt */
    char *path = (argc > 1) ? argv[1] : "output.txt";

    /* Open file for writing and obtain file pointer */
    FILE *file = fopen(path, "w");
    
    /* Print error message and exit if fopen() failed */
    if (!file) 
    {
        perror(path);
        return EXIT_FAILURE;
    }

    /* Writes text to file. Unlike puts(), fputs() does not add a new-line. */
    if (fputs("Output in file.\n", file) == EOF)
    {
        perror(path);
        e = EXIT_FAILURE;
    }

    /* Close file */
    if (fclose(file)) 
    {
        perror(path);
        return EXIT_FAILURE;
    }
    return e;
}

該程式開啟檔案,其名稱在 main 的引數中給出,如果沒有給出引數,則預設為 output.txt。如果已存在具有相同名稱的檔案,則會丟棄其內容,並將該檔案視為新的空檔案。如果檔案尚不存在,則 fopen() 呼叫會建立它。

如果 fopen() 呼叫由於某種原因失敗,則返回 NULL 值並設定全域性 errno 變數值。這意味著程式可以在 fopen() 呼叫後測試返回值,如果 fopen() 失敗則使用 perror()

如果 fopen() 呼叫成功,則返回有效的 FILE 指標。然後可以使用此指標來引用此檔案,直到呼叫 fclose() 為止。

fputs() 函式將給定文字寫入開啟的檔案,替換檔案的任何先前內容。與 fopen() 類似,fputs() 函式也會在失敗時設定 errno 值,但在這種情況下,函式返回 EOF 以指示失敗(否則返回非負值)。

fclose() 函式重新整理任何緩衝區,關閉檔案並釋放 FILE *指向的記憶體。返回值表示完成就像 fputs() 那樣(儘管如果成功則返回'0’),同樣在失敗的情況下也設定 errno 值。