C语言基础 - 文件编程 —— 概述篇

举报
莫浅子 发表于 2022/12/09 11:08:38 2022/12/09
【摘要】 ​ 目录联合体和共用体  枚举系统文件文件指针和普通指针区别文件分类文件操作的一般步骤文件访问路径打开,关闭文件函数​编辑联合体和共用体     union test {        char ch;        short sh;        int var;    };  联合体 1)内部所有成员变量地址一致。等同于整个联合体的地址。 2)联合体的大小,是内部成员变量中,最大的那个...

 目录

联合体和共用体 

 枚举

系统文件

文件指针和普通指针区别

文件分类

文件操作的一般步骤

文件访问路径

打开,关闭文件函数



编辑


联合体和共用体 

    union test {

        char ch;

        short sh;

        int var;
    };

  联合体

 1)内部所有成员变量地址一致。等同于整个联合体的地址。


 2)联合体的大小,是内部成员变量中,最大的那个成员变量的大小。(对齐)


 3)修改其中任意一个成员变量的值,其他成员变量会随之修改。

 编辑

最后得到的地址是一样的。 




 枚举

枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

enum  color {

    枚举常量

};

    enum  color {

        red, green, blue, black, pink, yellow

     };

  枚举常量: 是整型常量。不能是浮点数。可以是负值。 默认初值从 0 开始,后续常量较前一个常    量 +1.

  可以给任意一个常量赋任意初值。后续常量较前一个常量 +1\

编辑




系统文件

C语言中有三个特殊的文件指针由系统默认打开,用户无需定义即可直接使用:

1.stdin: 标准输入,默认为当前终端(键盘),我们使用的scanf、getchar函数默认从此终端获得数据。


2.stdout:标准输出,默认为当前终端(屏幕),我们使用的printf、puts函数默认输出信息到此终端。


3.stderr:标准出错,默认为当前终端(屏幕),我们使用的perror函数默认输出信息到此终端。

标准输入 -- stdin -- 0


标准输出 -- stdout -- 1


标准错误 -- stderr -- 2

 应用程序启动时,自动被打开,程序执行结束时,自动被关闭。 ---- 隐式回收。

  

1s = 1000ms   1ms = 1000us   1us == 1000ns




文件指针和普通指针区别

数据类型:FILE

FILE *fp = NULL;

借助文件操作函数来改变 fp 为空、野指针的状况。    fopen();  --> 相当于 fp = malloc();

图示 

编辑


 操作文件, 使用文件读写函数来完成。 fputc、fgetc、fputs、fgets、fread、fwrite



文件分类

 1.设备文件

    屏幕、键盘、磁盘、网卡、声卡、显卡、扬声器...

   

编辑


 2.磁盘文件:

指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。

      文本文件:       

  1. 基于字符编码,常见编码有ASCII、UNICODE等
  2. 一般可以使用文本编辑器直接打开
  3. 数5678的以ASCII存储形式(ASCII码)为:00110101 00110110 00110111 00111000

      二进制文件:   

  1. 基于值编码,自己根据具体应用,指定某个值是什么意思
  2. 把内存中的数据按其在内存中的存储形式原样输出到磁盘上
  3. 数5678的存储形式(二进制码)为:
  4. 00010110 00101110

编辑


文件操作的一般步骤


 1. 打开文件 fopen()    open()   popen() --》 FILE *fp;


 2. 读写文件 fputc、fgetc、fputs、fgets、fread、fwrite


 3. 关闭文件 fclose()   close()     pclose()   

注意这里面,打开文件有多种打开方式,但是与之对应的都有一一映射关系的close,fopen()对应fclose()   open()对应close() , popen()对应pclose(), 千万不能混着用



文件访问路径

 绝对路径

   从系统磁盘的 根盘符开始,找到待访问的文件路径 

Windows书写方法:


    1)C:\\Users\\afei\\Desktop\\06-文件分类.avi    (注意是俩个\\)


     2)C:/Users/afei/Desktop/06-文件分类.avi  --- 也使用于Linux。

查看路径方法,右击文件,选择 属性  ,在 安全  找到 属性名称 即可


    相对路径

        1)如果在VS环境下,编译执行(Ctrl+F5),文件相对路径是指相对于 day10.vcxproj 所在目录位置。

        2)如果是双击 xxx.exe 文件执行,文件的相对路径是相对于 xxx.exe 所在目录位置。




打开,关闭文件函数

 打开函数

FILE * fopen(const char * filename, const char * mode);


        参1(filename):待打开文件的文件名(访问路径)


        参2   (mode ):文件打开权限


文件打开权限初学只需要会三种

"r": 只读方式打开文件, 文件不存在,报错。存在,以只读方式打开。


"w": 只写方式打开文件, 文件不存在,创建一个空文件。文件如果存在,清空并打开。


"w+":读、写方式打开文件,文件不存在,创建一个空文件。文件如果存在,清空并打开。

总的打开模式 

编辑

返回值:成功:返回打开文件的指针

               失败:返回NULL


关闭函数

int fclose(FILE * stream);


        参1:打开文件的fp(fopen的返回值)


        返回值:成功 :0, 失败: -1;


例子

注意使用perror的原因是因为可以显示错误的原因




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。