打开并写入文件

#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 值。