開啟並寫入檔案
#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
值。