栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

APUE 学习笔记(I/O之标准I/O)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

APUE 学习笔记(I/O之标准I/O)

标准I/O(stdio):一切实现的基础

stdio相关函数:man手册第三章
man手册第一章:基本命令
man手册第二章:系统调用
man手册第三章:标准库函数
man手册第七章:机制
注意:在标准IO中有一个FILE类型贯穿始终
1.fopen()
原型:FILE *fopen(const char *path , const char *mode)
(1) const修饰说明函数不会修改用户传过来的内容,让用户放心用(知识点:指针常量,常量指针)。
(2)返回值注意点:当失败时,不仅返回一个NULL,还会设置errno。errno需要马上打印。系统路径:/usr/include/asm-generic/

2.fclose();
注意:谁打开谁关闭

3.fgetc();
4.fputc();
注意:返回值为int,这对函数较为通用,因为不管是什么字符都可以读取,直到读到文件尾,fget()返回EOF。相比于fgets()读取要好一点,因为fgets()在遇到’n‘或者文件尾时结束。

5.fgets();
注意点:读取stream,遇到n或者文件结尾时结束,并且在结尾追加’’,读取失败时返回NULL

6.fputs();
注意点:向stream输出字符串(以’’结束),当fgets()与fputs()结合使用的时候,要注意文件当中是否存在空洞。

7.fread();
8.fwrite();
注意:能够以item形式读取,但读取过程不能出错,否则后续读取内容将出错。所以最好是当作fgetc(),fputc()来使用。

9.printf();
10.scanf();
注意点:要注意缓冲模式:
(1)行缓冲模式,终端设备,例如stdout。刷新:遇到’n’或者强制刷新。
(2)全缓冲模式,默认。刷新:满了刷新或者强制刷新
(3)无缓冲模式,例如stderr。立即输出
示例代码:

#include 
#include 

{
    FILE *p;
    p = fopen("b" , "w");//b为自建文件。
    if(p == NULL)
    {
            perror("fopen()");
            exit(1);
    }

    fprintf(p , "hello world!");
    //fclose(p);//当不加这句时文件b中 ,写不进hello world!,要想写入,可调用fflush(),fclose(p) ,或者hello world后加n.

    while(1);

    exit(0);
}

11.fseek();
12.ftell();
注意:问题:

fseek(FILE * stream , 0 , SEEK_END);
feof(FILE* stream);
//以这种方式,feof()的返回值是0,即判断还不是文件尾。
fseek(FILE *stream , 0 , SEEK_END)
fgetc(stream);//可以知道肯定读取失败,指针位置并未改变
feof(stream)
//此时feof(stream)返回1,即判断是文件尾

13.rewind();

14.fflush();


持续更新中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号