打开并写入文件
#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
值。