linux编程---标准高级IO基础知识点

    技术2024-05-27  102

    标准高级I/O

    一、文件流指针和fopen函数

    FILE *fp = fopen(const char *path, const char *mode);

    第一个参数(path):打开文件的路径和文件名

    第二个参数(mode):打开文件的方式

    mode功能b二进制文件r以制度方式打开文件,文件必须存在w以只写覆盖方式打开文件,文件不存在则创建a以只写追加方式打开文件,文件不存在则创建r+以读写方式打开文件,文件必须存在w+、a+…读写方式…

    另外,stdio.h头文件把三个文件指针与三个标准文件相关联,C程序会自动打开这三个标准文件。

    标准文件文件指针常用功能类型标准输入stdin从键盘输入标准输出stdout从显示器输出行缓存标准错误stderr从现实器输出无缓存

    这些指针都是指向FILE的指针,可以将其用作标准I/O的参数,也就是和fp是同一种性质。

    返回值:文件流指针



    二、读写函数

    1.行缓存的读写函数(出现"\n"或写满标准库分配的缓存才会调用系统调用函数)

    写函数:

    puts、fputs、scanf

    以fputs为例:

    int fputs(const char *s, FILE *stream);

    例如:

    int main() { fputs("hello world!", stdout);//stdout表示标准的输出 while(1); return 0; }

    在此程序中,只有在hello world后面加"\n"才能输出到显示屏上,即验证了fputs是行缓存

    读函数:

    gets、fgets、printf、sprintf、fprintf

    以fgets为例:

    char *fgets(char *s, int size, FILE *stream);

    例如:

    int main() { char rd_buf[128] = {0}; fgets(rd_buf, 128, stdin);//从标准输入中去读,即从键盘输入 fputs(rd_buf, stdout);//写到标准输出中去,即显示屏显示 return 0; }

    此程序运行后会从键盘输入后从显示器输出。

    2.全缓存读写函数(只有写满标准库分配的缓存才会调用系统调用函数)

    1.fwrite

    2.fread



    三、刷新缓存函数(fflush(FILE *stream))

    功能:把库函数中的缓存强制写到内核中去。

    例如:

    int main() { fputs("hello world!", stdout);//stdout表示标准的输出 fflush(stdout); while(1); return 0; }

    就算hello world后面不加"\n",也会将其输出到显示器上。



    四、fclose函数

    功能:在改文件被关闭之前,刷新缓存中的数据,释放标准I/O库为其分配的缓存。

    例如:

    int main() { fputs("hello world!", stdout);//stdout表示标准的输出 fclose(stdout); while(1); return 0; }

    其作用和fflush相同,因为fclose函数里包含了fflush函数。



    五、读写位置指针函数

    1.fseek函数

    int fseek(FILE *stream, long offset, int whence); whence说明SEEK_SET调整位置指针到开头SEEK_CUR调整位置指针为当前位置SEEK_END调整位置指针到末尾

    2.rewind函数

    void rewind(FILE *stream);

    功能:

    等价于(void)fseek(FILE *stream, 0, SEEK_SET);

    六、其他函数

    1.feof函数:判断是否已经到达文件结尾

    2.ferror函数:判断是否读写错误

    3.clearerr函数:清除流错误

    Processed: 0.012, SQL: 9