写入文件是不要随意使用sizeof(buf),数据有多少就写多少。

Untitled

将整数写入文件,整数根据主机的大小端存储方式显示整数十进制转二进制(共四字节)对应的字符形式,一字节对应一个字符。写入后读取回来没问题。

//注意优先级 == 优先级比 & 高 if((st.st_mode & S_IFMT) == S_IFREG)

nlink_t st_nlink; /* 硬链接的个数 */(到底是硬链接还是软链接)

diff filename1 filename2 //判断两个文件是否相同

缓冲区的刷新时机

行缓冲:和终端相关的缓冲 stdin stdout 大小1024

1、遇到换行符‘\n’

2、程序结束

3、输入和输出切换

4、关闭文件时fclose()

5、手动刷新fflush()

6、缓冲满时刷新

全缓冲:和文件相关的 fopen打开的文件 大小4096

1、遇到换行符‘\n’不会刷新

2、程序结束

3、输入和输出切换

4、关闭文件时fclose()

5、手动刷新fflush()

6、缓冲满时刷新

无缓冲:stderr

缓冲区大小0(有时是1,表示作用)

int open(const char *path, int access,int mode)  
    path 要打开的文件路径和名称                             
    access 访问模式,宏定义和含义如下:                          
        O_RDONLY         1    只读打开                           
        O_WRONLY         2    只写打开                           
        O_RDWR           4    读写打开                       
        还可选择以下模式与以上3种基本模式相与:                      
            O_CREAT     0x0100   创建一个文件并打开                  
            O_TRUNC     0x0200   打开一个已存在的文件并将文件长度设置为0,其他属性保持           
            O_EXCL      0x0400   未使用                              
            O_APPEND    0x0800   追加打开文件                       
            O_TEXT      0x4000   打开文本文件翻译CR-LF控制字符       
            O_BINARY    0x8000   打开二进制字符,不作CR-LF翻译                                                          
    mode 该参数仅在access=O_CREAT方式下使用,其取值如下:        
        S_IFMT      0xF000   文件类型掩码                        
        S_IFDIR     0x4000   目录                                
        S_IFIFO     0x1000   FIFO 专用                           
        S_IFCHR     0x2000   字符专用                            
        S_IFBLK     0x3000   块专用                              
        S_IFREG     0x8000   只为0x0000                          
        S_IREAD     0x0100   可读                                
        S_IWRITE    0x0080   可写                                
        S_IEXEC     0x0040   可执行

FILE *fopen(char *filename, char *mode)  
    filename 文件名称  
    mode 打开模式:                                              
        r   只读方式打开一个文本文件                             
        rb  只读方式打开一个二进制文件                           
        w   只写方式打开一个文本文件                             
        wb  只写方式打开一个二进制文件                           
        a   追加方式打开一个文本文件                             
        ab  追加方式打开一个二进制文件                           
        r+  可读可写方式打开一个文本文件                         
        rb+ 可读可写方式打开一个二进制文件                       
        w+  可读可写方式创建一个文本文件                         
        wb+ 可读可写方式生成一个二进制文件                       
        a+  可读可写追加方式打开一个文本文件                     
        ab+ 可读可写方式追加一个二进制文件

fgets按行获取,遇到‘\n’结束,且安全,会在最后一位添加‘\0’

gets不安全,未知大小获取。

sprintf()不安全,对buf大小不做检查,有越界风险,错误不可预知。

snprintf()安全,会对buf数组大小做检查,会报错,指定大小写入,没有越界的风险。