linux高级编程.学习笔记(一)

Linux系统:
    一切皆是文件
    b    block
        块设备文件                (文件IO)
        
    c    character                
        字符设备文件            (文件IO)
        
    d    directory                
        目录文件                (目录IO)
        
    -    普通文件                (标准IO、文件IO)
    
    l    link                    
        链接文件                (链接IO)
        
    s    socket
        套接字文件                (文件IO)
        
    p    pipe
        管道文件                (文件IO)



标准IO:
    stdio.h 

    putchar                                        fopen/fclose
    getchar                                        fgetc/fputc
    puts                                             fgets/fputs
    gets                                             fread/fwrite
    printf                                            fscanf/fprintf 
    scanf


    1.普通文件类型:
        (1)ASCII码文件
            文件中存放的数据都是能显示在终端上的字符组成
        (2)二进制文件
            文件中存放的数据不一定都是能够显示在终端的字符
        注意:
            ASCII码文件是一种特殊的二进制文件
            
    2.流:
        (1)有方向性
        (2)具有连续性
        (3)先进先出、后进后出特性   
    3.操作文件步骤:
        (1)打开文件
        (2)写入/读出
        (3)关闭

     4.函数接口:
        (1)fopen 
           FILE *fopen(const char *pathname, const char *mode);
           功能:
                打开文件并与其建立流
           参数:
                pathname:要打开文件名的字符串首地址
                mode:打开文件权限
                    r    只读
                        文件存在只读打开
                        文件不存在报错
                    
                    r+    读写
                        文件存在读写打开
                        文件不存在报错
                    
                    w    只写
                        文件存在,对文件清0,只写打开
                        文件不存在,创建文件,只写打开
                        
                    w+    写读
                        文件存在,对文件清0,写读打开
                        文件不存在,创建文件,写读打开
                        
                    a    追加只写
                        文件存在,追加只写打开
                        文件不存在,创建文件,只写打开 
                    
                    a+    追加读写
                        文件存在,追加读写打开
                        文件不存在,创建文件,读写打开 
           返回值:
                成功返回打开获得的文件流指针
                失败返回NULL
                
        (2)fclose 
           int fclose(FILE *stream);
           功能:
                关闭流
           参数:
                stream:文件流指针
           返回值:
                成功返回0 
                失败返回EOF(-1)

    5.三个特殊流:
        程序运行时,操作系统会默认打开三个流:
            stdin        标准输入流            gets getchar scanf 
            stdout        标准输出流            puts putchar printf
            stderr        标准出错流            perror
            
    6.流的读写:
        缓存:
            1.缓存类型:
                (1)全缓存                4k == 4096
                    缓存区满刷新
                    (1)程序结束刷新
                    (2)缓存区满刷新
                    (3)fflush函数刷新
                    
                    与文件建立的缓存一般为全缓存
                    
                (2)行缓存                1k == 1024 
                    缓存区遇到\n刷新
                    (1)程序结束刷新
                    (2)缓存区满刷新
                    (3)fflush函数刷新 
                    (4)遇到\n刷新 
                    
                    与终端建立的缓存一般为行缓存        stdout stdin 
                    
                (3)不缓存                0k 
                    立即刷新
                    
                    人机交互、界面控制、出错处理一般使用不缓存  stderr
                
            2.改变缓存类型
                setvbuf 
                int setvbuf(FILE *stream, char *buf, int mode, size_t size);
                功能:
                    修改文件流指针的缓存类型
                参数:
                    stream:文件流指针
                    buf:指定缓存空间首地址
                    mode:
                         _IONBF        不缓存
                         _IOLBF        行缓存
                         _IOFBF        全缓存
                    size:
                        指定缓存区大小
                返回值:
                    成功返回0 
                    失败返回非0 

        读写函数:
            1.fputc和fgetc
              应用场景:
                1.操作ASCII码文件
                2.操作单个字符
            
              (1)fputc
                 int fputc(int c, FILE *stream);
                 功能:
                    向流中写入一个字符
                 参数:
                    c:写入文件中字符的ASCII码值
                    stream:文件流指针 
                 返回值:
                    成功返回写入字符的ASCII码值
                    失败返回EOF(-1)
                
                注意:
                    1.fputc写入文件中的是字符
                    2.fputc写入一个字符

                练习:利用fputc向文件file.txt中写入"hello world"

              (2)fgetc
                 int fgetc(FILE *stream);
                 功能:
                    从流中读取字符
                 参数:
                    stream:文件流指针 
                 返回值:
                    成功返回读取字符的ASCII码值
                    失败返回EOF
                    读到文件末尾返回EOF
                    
            2.fputs/fgets 
              应用场景:
                1.操作ASCII文件
                2.操作字符串
                
                (1)fputs 
                   int fputs(const char *s, FILE *stream);
                   功能:
                        向流中写入字符串
                   参数:
                        s:写入字符串的首地址
                        stream:文件流指针 
                   返回值:
                        成功返回非负整数
                        失败返回EOF
                    
    7.主函数传参:
        int main(void);
        void main(void);
        int main(int argc, const char *argv[]);
        int main(int argc, const char **argv);
        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值