软件编程学习

IO:输入输出
    操作对象:文件

Linux系统一切皆是文件:
    文件分类:
    1.block     b     块设备文件        按块扫描设备信息的文件
    2.char      c     字符设备文件      按字符扫描设备信息的文件 
    3.directory d     目录文件          保存或管理文件
    4.          -     普通文件          保存数据信息的文件(代码、图片、音视频、压缩包等)
    5.link      l     链接文件          指向其他文件的文件 
    6.socket    s     套接字文件        用于进程间通信 
    7.pipe      p     管道文件          用于进程间通信

1.标准IO 
    stdio.h  
    主要操作普通文件 
    1.打开文件 
    2.读写文件 
    3.关闭文件 

2.特殊的流 
    stdin       标准输入流          行缓存
    stdout      标准输出流          行缓存
    stderr      标准错误流          不缓存

    gets、getchar、scanf是基于stdin实现的
    puts、putchar、printf是基于stdout实现的 
    perror是基于stderr

3.缓存:
    1.全缓存    4096  4k 
        缓存区满刷新
        
        与文件建立的缓存一般为全缓存

        刷新条件:
            1.缓存区存满了刷新
            2.fflush函数接口刷新
            3.关闭流时会刷新

    2.行缓存    1024  1k
        遇到\n刷新 

        与终端建立的缓存都是行缓存

        刷新条件: 
            1.缓存区满刷新 
            2.遇到\n刷新 
            3.fflush函数刷新 
            4.关闭流时会刷新

    3.不缓存    0  0k
        立即刷新 

        刷新条件:
            1.立即刷新

            1.对设备的操作不允许缓存
            2.通信不允许缓存
            3.出错处理不缓存 
4.函数接口
    1.fopen  
      FILE *fopen(const char *pathname, const char *mode);
      功能:
        打开pathname对应的文件并建立一个文件流
      参数:
        pathname:文件路径
        mode:打开方式
            r      只读             如果文件存在则只读打开
                                    如果文件不存在报错
            r+     读写             如果文件存在则读写打开
                                    如果文件不存在报错
            w      只写             如果文件存在则清0,只写打开 
                                    如果文件不存在则创建
            w+     写读             如果文件存在则清0,读写打开 
                                    如果文件不存在则创建
            a      追加只写         如果文件存在则追加只写打开 
                                    如果文件不存在则创建
            a+     追加读写         如果文件存在则追加读写打开 
                                    如果文件不存在则创建
      返回值:
        成功返回FILE*的指针
        失败返回NULL并且将错误码置位 

    2.fclose
      int fclose(FILE *stream);
      功能:   
        关闭流 
      参数: 
        stream:文件流
      返回值:
        成功返回0 
        失败返回EOF(-1)
    
    3.setvbuf 
      int setvbuf(FILE *stream, char *buf, int mode, size_t size);
      功能:
        改变流的缓存类型
      参数:
        stream:文件流
        buf:缓存区的首地址 
        mode:   
            _IOFBF  全缓存
            _IOLBF  行缓存
            _IONBF  不缓存
        size:缓存区大小
      返回值:
        成功返回0 
        失败返回非0 

    2.fgetc、fputc
      int fputc(int c, FILE *stream);
      功能:
        向流中写入一个字符 
      参数:
        c:写入的字符
        stream:文件流指针
      返回值:
        成功返回写入字符的ASCII码值
        失败返回EOF(-1) 

    练习:
      1.编写程序利用fputc将"hello world"写入到file.txt文件中

      fgetc 
      int fgetc(FILE *stream);
      功能:
        从流中读取下一个字符 
      参数:
        stream:文件流指针
      返回值:
        成功返回读到字符的ASCII码值
        失败或者读到文件末尾返回EOF

    等价
    ch = getchar();
    ch = fgetc(stdin);

    putchar(ch);
    fputc(ch, stdout);

    3.fgets、fputs 
    4.fscanf、fprintf
    5.fread、fwrite

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值