#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失败则再次设置该值。