linux高级编程2

标准IO

1.fread/fwrite

size_t fwrite (const void *ptr,size_t size,size_t nmemb,FILE *stream);

功能:函数从指定的内存位置开始,将一块数据写入到指定的文件流中。

参数:

        ptr:指向要写入文件的数据块的指针

        size:要写入的每个数据项的大小(以字节为单位)

        nmemb:x写几份

        stream:被写入的文件

返回值:

        成功:返回成功写入的数据项的数量

        失败:返回一个小于 nmemb 的值

size_t fread (const void *ptr,size_t size,size_t nmemb,FILE *stream);

功能:函数从指定的文件流中读取数据块到内存中。

参数:

         ptr:指向要写入文件的数据块的指针

        size:要写入的每个数据项的大小(以字节为单位)

        nmemb:被写几份

        stream:被写入的文件

返回值:

        成功:返回实际读取的数据项的数量

        失败:在读取过程中,如果遇到文件末尾或发生错误,fread 将返回一个小于请求的数据项数量的值。

 2.fseek/ftell/rewind

 int fseek(FILE *stream, long offset, int whence);

功能:函数从指定的文件流中读取数据块到内存中。

参数:

        stream:要操作的文件流

        offset:表示相对于 whence 指定的位置的偏移量,以字节为单位。

        whence:指定 offset 相对于什么位置进行偏移。

返回值:

        成功:0

        失败:-1(非零)

fseek(打开文件的地址,偏移量,SEEK_END/SEEK_CUR/SEEK_SET)
                                尾    当前位置    头
 long ftell(FILE *stream);

功能:函数从指定的文件流中读取数据块到内存中。

参数:

        stream:文件计算的大小

返回值:

        成功:返回当前文件位置指针相对于文件开头的偏移量(以长整型 long 表示)。

        失败:返回 -1L(即长整型值 -1)

rewind(FILE*stream);

功能:指针返回文件流顶

3.缓冲区

     行缓冲,1k,terminal,主要用于人机交互stdout

缓存区满或者遇到\n刷新 1024
        行缓存多是关于终端的一些操作
        1.遇到\刷新
        2.缓存区满刷新
        3.程序结束刷新
        4.fflush刷新 fflush(stdout); FlLE*fp  stdin stdout stderr


    全缓冲,4k,主要用于文件的读写
缓存区满刷新缓存区 4096
        对普通文件进行标准I0操作,建立的缓存一般为全缓存
        刷新条件:
        1.缓存区满刷新
        2.程序结束刷新
        3.fflush来刷新 fflush(fp);


    无缓冲,0k

主要用于出错处理信息的输出 stderr不对数据缓存直接刷新
        printf();==>>stdoutfprintf(strerr,"fopen error %s",filename);

        界面交互 出错丛理使用qdb查看,FILE结构体,或使用写入数据测试缓冲区。缓冲区的大小是可以设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值