首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C语言学习12.文件和IO(1)

C语言学习12.文件和IO(1)

I/O:input/output,输入输出。分三类:标准I/O,串I/O,文件I/O
标准I/O:

标准输入:从标准输入设备(键盘)获取数据,调用scanf,gether,gets等函数库实现
标准输出:向标准输出设备(显示屏)输出数据,调用printf,putchar,puts等函数库可以实现
标准错误输出:向标准错误设备(显示屏)输出数据(通常为错误信息),调用perror,fputs,fwrite,fprintf等可以实现
缓冲区:

buffer,一块内存空间
缓冲区为了提高效率,一次性拿走,以免输入一次拿一次。

    标准输入缓冲区:用于暂时存放标准输入数据的一块内存空间,通常键盘按键输入的数据(通常需要按回车键确认输入,此时会有一个换行符进去标准输入缓冲区中)首先会进入标准输入缓冲区中等待处理。当调用输入相关的库函数时,如果标准输入缓冲区中没有任何数据,这些函数会阻塞(等待用户按键输入数据)直到输入缓冲区有数据为止。如果标准输入缓冲区中存在数据,并且这些数据是它们期望类型的数据,他们会取走这些数据,否则它们会立即失败返回。
    清空标准输入缓冲区的做法:
    While(getchar()!=‘\n’);
    标准输出缓冲区:调用标准输出相关的库函数时,输出的数据并不是立即被推送到显示屏上显示,而是进入标准输出缓冲区排队等候输出,当标准输出缓冲区满了或遇到了一些特殊字符(‘\n’),操作系统就会将标准输出缓冲区里面的所有数据一次性地推送到显示屏上显示出来。
    标准错误输出没有缓冲区,是及时输出,保证我们可以及时看到错误信息。
    Fflush(stdout);刷新(清空)标准输出缓冲区,即将标准输出缓冲区已有的数据立即推送到屏幕上显示。
    Perror 标准错误输出

串I/O:

从一个字符串获取数据输入或输出数据到一个字符缓冲区,调用sscanf和sprintf
Sscanf函数可以用于取出字符串中的部分数据
Sprintf函数可以用于将其他类型数据转换为字符串
I=atoi(str);将字符串转换成整形
Atol,atof,strtod,strtof,strtol
文件I/O:File I/O

文件是指存储在计算机外部存储设备中的相关信息的集合。
C 语言使用数据文件的目的:
1. 数据文件的改动不会引起程序的改动,也就是数据和程序是分离的。
2. 不同程序可以访问同一数据文件中的数据,也就是数据共享。
3. 能长期保存程序运行的中间数据或结果数据。

文件分类:
逻辑结构:记录文件(数据库文件),流式文件(字符数据顺序组成的文件)
存储介质:普通文件(磁盘文件),设备文件(键盘,显示器,打印机等)
文件内容:程序文件(源文件,目标文件,可执行文件),数据文件(媒体文件等)
组织形式:文本文件,二进制文件

C语言把文件当成一个“流”,按字节进行处理。
C文件按编码方式分为二进制文件和ASCLL文件
C语言中,用文件指针标识文件,当一个文件被打开时,可取得该文件指针。
文件在读写之前必须打开,读写结束必须关闭
文件可以按只读只写读写追加四种操作方式打开,同时还必须指定文件的类型是二进制文件还是文本文件。
文件可按字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写。
文件内部的位置指针可指示当前的读写位置,移动该指针可以对文件实现随机读写。
文件的打开
返回列表