文件流分为:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)
重定向:由于标准输出和标准错误输出通常都是直接打印到屏幕上,为了区分它们,可以使用Linux shell的重定向功能
——重定向标准输入使用<
——重定向标准输出使用>
——重定向标准错误输出使用2>
错误处理
——错误指示器——ferror
——使用clearerr函数可以人为地清楚文件末尾指示器和错误指示器的状态。
——ferror函数智能检测是否出错,但无法获得错误原因,不过,大多数系统函数在出现错误的时候会将错误原因记录在errno中。
——perror函数可以直观打印出错误原因。
——strerror函数直接返回错误码对应的错误信息。
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
FILE *fp;
int ch;
if ((fp = fopen("output.txt", "r")) == NULL)
{
fputs("打开文件失败!\n", stderr);
exit(EXIT_FAILURE);
}
while(1)
{
ch = fgetc(fp);
if (feof(fp))
{
break;
}
putchar(ch);
}
fputc('C', fp);
if (ferror(fp))
{
fputs("出错啦!\n", stderr);
}
fclose(fp);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(void)
{
FILE *fp;
if ((fp = fopen("yagenerjiubucunzai.txt", "r")) == NULL)
{
fprintf(stderr, "错误原因-> %s <- \n", strerror(errno));
exit(EXIT_FAILURE);
}
fclose(fp);
return 0;
}