前言:C语言提供了一些库函数,而IO函数就是其中的一部分。
首先我们介绍一个错误报告函数:perror
void perror(const char * str)
perror以一种简单、统一的方式报告错误。C函数库的许多函数调用操作系统来完成任务。当操作系统按照要求执行某些任务的时候,就可能会失败。例如:打开一个根本就不存在的文件,读取内容。操作系统的做法就是发生错误的时候,能够提示发生的错误。
标准库函数提供了一个全局变量errno(在errno.h中定义),来记录错误的错误码,交给用户程序,用于提示错误的准确原因。
例子:
#include <stdio.h>
int main(){
FILE* pFile;
pFile = fopen("1.txt","rb");
if(pFile == NULL)
perror("The following error occurred");
else
fclose(pFile);
return 0;
}
输出结果:
如果perror函数的参数str不是NULL,并非指向一个非空字符串,perror函数先打印这个字符串,然后跟着输出一个分号和空格,接着输出错误信息提示。
终止执行(exit)
原型如下:void exit(int status);
参数status返回给了操作系统,用于提示程序是否正常完成。
C语言定义了预定义符号:EXIT_SUCCESS和EXIT_FAILURE 来表示成功或者失败返回。
例子:
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE* pFile;
pFile = fopen("1.txt","rb");
if(pFile == NULL){
printf("Error opening file");
exit(EXIT_FAILURE);
}
else
fclose(pFile);
return 0;
}
注意:main函数的返回值就是函数的退出码。
I/O概念
当前的计算机有大量不同的设备,很多都与I/O相关,每一种外设都有不同的特性和操作协议。操作系统负责这些设备的通信细节,并向程序员提供一个更简单的,更统一的I/O接口。