【Linux网络编程】标准IO之fopenfcloseperror

    xiaoxiao2024-11-12  63

    标准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执行结果:

    最新回复(0)