深入了解linux系统—— 基础IO(上)

06-01 1314阅读

文件

在之前学习C语言文件操作时,我们了解过什么是文件,这里简单回顾一下:

文件存在磁盘中,文件有分为程序文件、数据文件;二进制文件和文本文件等。

详细描述见文章:文件操作——C语言

  • 文件在磁盘里,磁盘是永久性存储介质,因为文件在磁盘上的存储是永久性的;
  • 磁盘是外设(是输入设备也是输出设备);
  • 本质上对磁盘是文件的所有操作,都是对外设的输入和输出;也就是I/O。

    对于文件的认识:

    • 文件 = 文件内容 + 文件属性
    • 文件大小是0KB的文件也是占用磁盘空间的
    • 所有对于文件的相关操作都是对文件内容和文件属性就行操作。

      在系统层面理解

      • 我们操作文件(打开,关闭文件),本质上是进程对于文件的操作;
      • 磁盘的管理者是操作系统;
      • 我们在C/C++使用库函数来对文件进行读写操作,本质上是通过文件相关的系统调用去完成的。

        C文件操作

        打开和关闭文件

        在C语言当中,我们通过fopen来打开文件,fclose来关闭文件;

        1. fopen:打开文件,如果打开成功返回一个FILE*类型的指针,执行被打开的文件;打开失败则返回NULL;
        2. fclose:关闭文件,传参FILE*类型的指针,关闭指定文件。
        #include 
        int main()      
        {      
            FILE* fp = fopen("log.txt","w");//以读方式打开,文件不存在就新建      
            if(fp == NULL){      
                perror("fopen");      
                return 1;      
            }      
            //....      
            fclose(fp);//关闭文件               
            return 0;                                             
        }  
        

        打开文件的方式

        深入了解linux系统—— 基础IO(上)

        我们知道在C语言的fopen接口打开文件是有很多打开方式

        r:以读方式打开、w以写方式打开、a以追加方式打开。

        r方式,当文件不存在时就打开文件失败;

        w方式,当文件不存在时就新建文件(在当前工作路径下创建,进程当中存放了当前工作路径);如果文件存在会清空当前文件的内容;然后在进入写入。

        a方式,追加,当文件不存在就新建文件;如果文件已经存在,打开时不会清空文件内容,而是在文件末尾进行写入

        写文件

        当我们以w/r方式打开一个文件,我们要将内容写到文件当中;

        深入了解linux系统—— 基础IO(上)

        我们可以使用fputc、fputs、fwrite、fprintf进行文件的写入;

        #include 
        int main()      
        {      
            FILE* fp = fopen("log.txt","w");//以读方式打开,文件不存在就新建      
            if(fp == NULL){      
                perror("fopen");      
                return 1;      
            }      
            for(char ch = 'a';ch     
                fputc(ch,fp);    
            }    
            char* str = (char*)"I love you\n";    
            fputs(str,fp);    
            int x = 100;    
            fprintf(fp,"x = %d\n",x); 
            fclose(fp);//关闭文件               
            return 0;                                             
        }  
              
            FILE* fp = fopen("log.txt","w");//以读方式打开,文件不存在就新建      
            if(fp == NULL){      
                perror("fopen");      
                return 1;      
            }
            for(int i = 0;i    
                printf("%c",fgetc(fp));    
            }    
            printf("\n");    
            char buff[20];    
            fgets(buff,12,fp);    
            //buff[11] = '\0';    
            printf("%s",buff);    
            int x;    
            fscanf(fp,"x = %d",&x);    
            printf("x = %d\n", x);  
            fclose(fp);//关闭文件               
            return 0;                                 
        }  
            
            if(flag & ONE)  printf("ONE ");    
            if(flag & TWO)  printf("TWO ");    
            if(flag & THREE)  printf("THREE ");    
            printf("\n");    
        }    
        int main()    
        {    
            func(ONE);    
            func(ONE | TWO);    
            func(ONE | THREE);    
            func(ONE | TWO | THREE);  
            return 0;
        }
              
            int fd = open("love.txt",O_CREAT | O_WRONLY,0666);      
            if(fd 
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码