【Linux网络编程】5 标准IO之fopen/fclose/perror

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zztingfeng/article/details/90573424

标准IO库

要使用标准IO库,需要包含头文件 <stdio.h> 。该库为用户创建了一个连接底层系统调用的通用接口,它是ANSI C标准制定的库,因此具有可移植性(文件IO是基于Unix的POSIX标准,不可移植到Windows)。同文件IO类似,它需要先打开一个文件以建立一个访问途径,文件IO的访问途径是通过文件描述符,标准IO的访问途径是流(stream),它被实现为指向结构FILE的指针。

基本操作

1 打开/创建文件流

FILE *fopen(const char *restrict pathname, const char *restrict mode);
第一个参数: 文件的路径
第二个参数:文件打开的模式                                  
返回值: 返回指向文件的指针,指针不为NULL是成功,指针为NULL是失败

文件打开模式:

1. "r" or "rb"            : 以只读形式打开文(文件必须存在)
2. "w" or "wb"            : 以写方式打开文件并将文件长度截为0或创建一个供写的文件 
3. "a" or "ab"            : 以写方式打开文件并将内容写到文件末或创建一个文件
4. "r+" or "rb+" or "r+b" : 以更新的方式(读/写)打开文件(文件必须存在)
5. "w+" or "wb+" or "w+b" : 以更新的方式(读/写)打开文件并将文件长度截为0或创建一个文件
6. "a+" or "ab+" or "a+b" : 以更新的方式(读/写)打开文件并将更新内容写到文件末或创建一个文件

2 关闭文件流

int fclose(FILE *stream);
参数:FILE *stream: 指向被关闭文件的指针 
返回值:关闭文件成功返回0,关闭文件失败返回而EOF

3 错误处理

标准IO函数执行时出现错误,会把错误码保存在error中,程序员可以通过相应的函数打印错误信息。

#include<stdio.h>
void perror(const char* s);
参数:在标准错误流上输出的信息
返回值:无

代码:

#include <stdio.h>
int main(int argc, char *argv[])
{
    FILE *fp;
	if((fp = fopen("1.txt","r")) == NULL)
	{
		perror("fail to fopen");
		return -1;
	}
    fclose(fp);   
    return 0; 
}

文件不存在,则会报下列错误:

4 strerror函数

#include<string.h>
#include<errno.h>
char *strerror(int errnum);
参数:错误码
返回值:错误码对应的错误信息

代码:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    FILE *fp;
	int errno;
	if((fp = fopen("1.txt","r")) == NULL)
	{
		printf("fail to fopen:%s\n",strerror(errno));
		return -1;
	}
    fclose(fp);   
    return 0; 
}

gcc执行结果:

猜你喜欢

转载自blog.csdn.net/zztingfeng/article/details/90573424