linux高级编程之IO操作(西红柿种子.二)

函数原型
    1.fgets和fputs 
        注意:只能操作ASCII码文件    
        (1)fgets
        char *fgets(char *s, int size, FILE *stream);
        功能:
            从流中读size个字符,遇到EOF或者\n读取停止
        参数:
            s:存放读取到字符串空间首地址 
            size:想要读取字符的个数
            stream:文件流指针
        返回值:
            成功返回读取到字符串存放空间的首地址
            失败返回NULL
            读到文件末尾返回NULL
            
        gets(tmpbuff);
        fgets(tmpbuff, sizeof(tmpbuff), stdin);
        注意:
            gets会去掉从终端接收的\n字符(会将最后一个\n改成\0),gets如果接的字符空间内存的下则无问题,如果超过空间内存大小则会有越界访问的风险,这个也是gets危险的原因
            fgets不会去掉从终端接收的\n字符 (在最后一个\n后面加一个\0)
            fputs不会像puts一样打印\n
    2.fprintf、fscanf
        注意:只能操作ASCII码文件        
        (1)fprintf 
           int fprintf(FILE *stream, const char *format, ...);
           功能:
                向流中输出格式化字符串
           参数:
                stream:文件流指针
                format:输入字符串个数
                ...:对应的实参变量的值
           返回值:
                成功返回成功打印字符的个数
                失败返回负数            
        (2)fscanf  
           int fscanf(FILE *stream, const char *format, ...);
           功能:
                从流中读取格式化字符串
           参数:
                stream:文件流指针 
                format:接收字符串的格式
                ...:存放数据空间首地址
           返回值:
                成功返回成功匹配输入控制符个数
                失败返回EOF
                读到文件末尾返回EOF             
    3.fwrite/fread
        1.操作二进制文件            
        (1)fwrite
           size_t fwrite(const void *ptr, size_t size, size_t nmemb,
                     FILE *stream);
           功能:
                向流中写入nmemb个对象,每个对象size个字节,在ptr指向的空间中
           参数:
                ptr:存放数据空间首地址
                size:对象的大小
                nmemb:对象的个数
                stream:文件流指针 
           返回值:
                成功返回写入对象的个数
                失败返回0         
        (2)fread
           size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
           功能:
                从流中读取nmemb个对象,每个对象size个字节,存放到ptr指针指向的空间中
           参数:
                ptr:存放数据空间首地址
                size:每个对象的大小
                nmemb:对象的个数
                stream:文件流指针 
           返回值:
                成功返回读取对象的个数
                失败返回0
                读到文件末尾返回0 
        size_t 类型就是无符号的整型

    4.流的定位:
        (1)fseek
           int fseek(FILE *stream, long offset, int whence);
           功能:
                重新设置文件位置标识(偏移量)
           参数:
                stream:文件流指针
                offset:偏移量
                        > 0        向后偏移
                        < 0        向前偏移
                whence:标志
                        SEEK_SET    从文件开头偏移
                        SEEK_CUR    从当前位置偏移
                        SEEK_END    从文件末尾偏移
           返回值:
                成功返回0 
                失败返回-1                 
        (2)ftell
           long ftell(FILE *stream);
           功能:
                获得流的偏移量
           参数:
                stream:文件流指针 
           返回值:
                成功返回当前偏移量
                失败返回-1 

        (3)rewind 
           void rewind(FILE *stream);
           功能:
                将流重定位到开头
           参数:
                文件流指针 
           返回值:
                缺省

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值