示例
#include/*forperror(),fopen(),fputs()andfclose()*/
#include/*fortheEXIT_*macros*/
intmain(intargc,char**argv)
{
inte=EXIT_SUCCESS;
/*Getpathfromargumenttomainelsedefaulttooutput.txt*/
char*path=(argc>1)?argv[1]:"output.txt";
/*Openfileforwritingandobtainfilepointer*/
FILE*file=fopen(path,"w");
/*Printerrormessageandexitiffopen()failed*/
if(!file)
{
perror(path);
returnEXIT_FAILURE;
}
/*Writestexttofile.Unlikeputs(),fputs()doesnotaddanew-line.*/
if(fputs("Outputinfile.\n",file)==EOF)
{
perror(path);
e=EXIT_FAILURE;
}
/*Closefile*/
if(fclose(file))
{
perror(path);
returnEXIT_FAILURE;
}
returne;
}
该程序使用在mainoutput.txt参数中给定名称的文件打开文件,默认情况下为未提供参数的情况。如果已经存在同名文件,则将其内容丢弃,并将该文件视为新的空文件。如果文件尚不存在,则fopen()调用将创建该文件。
如果fopen()调用由于某种原因失败,它将返回一个NULL值并设置全局errno变量值。这意味着程序可以在fopen()调用后测试返回的值,并perror() 在fopen()失败时使用。
如果fopen()调用成功,它将返回一个有效的FILE指针。然后可以使用该指针来引用该文件,直到对其fclose()进行调用为止。
该fputs()函数将给定的文本写入打开的文件,替换该文件的所有先前内容。与相似fopen(),该fputs()函数还会在errno失败时设置该值,尽管在这种情况下,该函数将返回EOF以指示失败(否则返回非负值)。
该fclose()函数刷新所有缓冲区,关闭文件并释放指向的内存FILE *。返回值与完成时一样指示完成fputs()(尽管成功则返回“ 0”),如果errno失败则再次设置该值。