C语言打开并写入文件

示例

#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 tooutput.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;
}

该程序使用在mainoutput.txt参数中给定名称的文件打开文件,默认情况下为未提供参数的情况。如果已经存在同名文件,则将其内容丢弃,并将该文件视为新的空文件。如果文件尚不存在,则fopen()调用将创建该文件。

如果fopen()调用由于某种原因失败,它将返回一个NULL值并设置全局errno变量值。这意味着程序可以在fopen()调用后测试返回的值,并perror()  在fopen()失败时使用。

如果fopen()调用成功,它将返回一个有效的FILE指针。然后可以使用该指针来引用该文件,直到对其fclose()进行调用为止。

该fputs()函数将给定的文本写入打开的文件,替换该文件的所有先前内容。与相似fopen(),该fputs()函数还会在errno失败时设置该值,尽管在这种情况下,该函数将返回EOF以指示失败(否则返回非负值)。

该fclose()函数刷新所有缓冲区,关闭文件并释放指向的内存FILE *。返回值与完成时一样指示完成fputs()(尽管成功则返回“ 0”),如果errno失败则再次设置该值。