C语言入门第六章知识点总结.doc
《C语言入门第六章知识点总结.doc》由会员分享,可在线阅读,更多相关《C语言入门第六章知识点总结.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 传智播客C/C+课堂笔记 C语言入门66.1 如何节约内存-位运算内存单元,即1B,我们说char型占1个内存单元(1B),而short型占2个内存单元(2B)。1B被当成整体来看。但同时1 B = 8 bits1个字节有8个位,每个位有0、1两个取值。总体来说,C语言中的位运算符有以下两类:位逻辑运算符:(位逻辑运算以位(bit)为单位)&(位“与”)、(位“异或”)、|(位“或”)、(位“取反”)。移位运算符:(右移)位“取反”:操作符为“”,如果A为10101010,那么A返回的结果为01010101,即每位都取反,0变成1,1变成0,需要注意的是,位取反运算并不改变操作数的值位“与”
2、:操作符为&,将对两个操作数的每一位进行与运算,位“与”运算的准则如下:1 & 1=1 1 & 0=0 0 & 1=0 0 & 0=0位“或”:操作符为|,将对两个操作数的每一位进行或运算,位“或”运算的准则如下:1 | 1=1 1 | 0=1 0 | 1=1 0 | 0=0位“异或”:操作符为,将对两个操作数的每一位进行异或运算。通俗地讲,如果两个位相同(同为0或同为1),结果为0,若两个位不同(一个为0,另一个为1),结果为1,对应的准则为:1 1=0 1 0=1 0 1=1 0 0=0移位运算表达式的基本形式为:A n;/*右移*/A称为操作数,其必须为数字型变量或数字型常量,此处的数字
3、型包括整型、浮点型和char型,A中存储的0、1序列向左或右移动n位,移动后的值作为整个表达式的输出,执行移位运算并不改变操作数A的值。小结:位运算主要分为位逻辑运算和移位运算两大类,位逻辑运算主要有位取反运算、位或运算、位与运算和位异或运算,使用时应注意和普通变量的逻辑运算区分。移位运算分为向左移动和向右移动两类,对无符号数或有符号正数来说,编译器会自动为空白位补0,对有符号负数来说,当填充的空白位牵扯到符号位时,编译器会对符号位进行特殊处理。6.2 不局限内存-文件输入输出都是由printf函数和scanf函数来完成,完成的也只是极其简单的任务,所有的变量和数字什么的都是放在内存中,一旦断
4、电,所有的数据都会丢失,有时,希望能将结果保存起来,下次开机时再使用,这就要用到文件。文件:存储在外部介质上数据的集合,是操作系统数据管理的单位。文件分类按文件的逻辑结构:记录文件:由具有一定结构的记录组成(定长和不定长)流式文件:由一个个字符(字节)数据顺序组成按存储介质:普通文件:存储介质文件(磁盘、磁带等)设备文件:非存储介质(键盘、显示器、打印机等)按数据的组织形式:文本文件: ASCII文件,每个字节存放一个字符的ASCII码二进制文件:数据按其在内存中的存储形式原样存放6.2.1 二进制文件和文本文件的区别6.2.2 文件标识n 每个文件都以文件名为标识,I/O设备的文件名是系统定
5、义的,如:n COM1或AUX第一串行口,附加设备n COM2第二串行口,此外,还可能有COM3、COM4等n CON控制台(console),键盘(输入用)或显示器(输出用)n LPT1或PRN第一并行口或打印机n LPT2第二并行口,还可能有LPT3等n NUL空设备磁盘文件可以由用户自己命名,但上述被系统(windows和dos下均是如此)保留的设备名字不能用作文件名,如不能把一个文件命名为CON(不带扩展名)或CON.TXT(不带扩展名)6.2.3 流流是一个动态的概念,可以将一个字节形象地比喻成一滴水,字节在设备、文件和程序之间的传输就是流,类似于水在管道中的传输,可以看出,流是对输
6、入输出源的一种抽象,也是对传输信息的一种抽象。通过对输入输出源的抽象,屏蔽了设备之间的差异,使程序员能以一种通用的方式进行存储操作,通过对传输信息的抽象,使得所有信息都转化为字节流的形式传输,信息解读的过程与传输过程分离。C语言中,I/O操作可以简单地看作是从程序移进或移出字节,这种搬运的过程便称为流(stream)。程序只需要关心是否正确地输出了字节数据,以及是否正确地输入了要读取字节数据,特定I/O设备的细节对程序员是隐藏的。6.2.4 文件的处理方法缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区6.2.5
7、 重定向重定向是由操作系统来完成的,一般来说,标准的输出和输入设备通常指的是显示器和键盘,在支持重定向的操作系统中,标准输入输出能被替换。n DOS系统为例,看一段代码:#include /*使用printf要包含的头文件*/void main(void)/*主函数*/printf(本段文字用来测试重定向);/*输出提示信息*/getchar();/*等待,按任意键继续*/Hello.exe 输出6.2.6 文件类型指针指针变量说明: FILE *fp;用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件文件关闭后,它的文件结构体被释放6.2
8、.7 文件型结构体使用printf函数时,输出设备默认为标准输出设备(一般是显示器),因此,不需要告诉printf函数显示器在哪。但如果想从文件中读取输入,情况就不同了,系统中有不同的磁盘,每个磁盘又有成千上万的文件,到底应该从哪个读呢?要想对文件进行操作,系统需要很多控制信息,包括文件名,文件当前读写位置,缓冲区位置和大小等,为此,C语言提供了“文件型”结构来标示记录待操作文件的信息,该结构定义于头文件stdio.h中,其形式为:struct _iobuf char *_ptr;/当前缓冲区内容指针int _cnt;/缓冲区还有多少个字符char *_base;/缓冲区的起始地址int _f
9、lag;/文件流的状态,是否错误或者结束int _file;/文件描述符int _charbuf;/双字节缓冲,缓冲2个字节int _bufsiz;/缓冲区大小char *_tmpfname;/临时文件名;typede f struct _iobuf FILE;6.2.8 文件操作步骤C语言程序在进行文件操作时遵循如下操作步骤:打开读写操作关闭,通俗地说,打开是获取文件结构、系统为文件分配缓冲区的过程,不打开文件就不能对其进行读写,关闭是释放缓冲区和其他资源的过程,不关闭文件就会慢慢耗光系统资源,。在进行文件操作时,系统自动与3个标准设备文件联系,这3个文件无需打开和关闭,它们的文件指针分别是
10、:stdin:标准输入文件指针,系统分配为键盘。stdout:标准输出文件指针,系统分配为显示器。stderr:标准错误输出文件指针,系统分配为显示器。举例来说,从文件输入和向文件输出有两个对应函数fscanf和fprintf,两个函数的原型分别为:int fprintf(FILE* ofp,控制字符串,参数表);int fscanf(FILE* ifp ,控制字符串,参数表);参数表中参数的个数同样是任意的,fprintf函数用于将转换后的控制字符串写出到ofp指向的文件中,fscanf用于从ifp指向的文件中读取字节信息为参数表中的参数赋值。前面章节中用到的标准输入输出函数printf和s
11、canf实际上等价于:fprintf(stdout, 控制字符串,参数表)fscanf(stdin, 控制字符串,参数表)6.2.9 文件打开与关闭C文件操作用库函数实现,包含在stdio.h“r+/rb+” (读写)“a/ab” (追加)“w/wb” (只写)“r/rb” (只读)“w+/wb+” (读写)“a+/ab+” (读写)为输入打开一个文本/二进制文件为输出打开或建立一个文本/二进制文件为读/写打开一个文本/二进制文件为读/写建立一个文本/二进制文件为读/写打开或建立一个文本/二进制文件向文本/二进制文件尾追加数据文件使用方式含义打开文件函数原型: FILE *fopen(char
12、 *name,char *mode)功能:按指定方式打开文件返值:正常打开,为指向文件结构体的指针;打开失败,为NULL关闭文件作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针函数原型:int fclose(FILE *fp)v 功能:关闭fp指向的文件v 返值:正常关闭为0;出错时,非0不关闭文件可能丢失数据6.2.10 字符读写函数fgetc和fputcfgetc(fp) fp为文件句柄,函数值为得到的字符。fputc(ch,fp) ch为字符变量,fp为句柄。成功函数返回相应字符;失败返回EOF。按照文本的方式读取字符,以及写入字符。feof函数原型: int feof(FI
13、LE *fp)功能:判断文件是否结束返值:文件结束,返回真(非0);文件未结束,返回0函数原型:char *fgets(char *s,int n,FILE *fp) int fputs(char *s,FILE *fp)(fputs把s指向的字符串写入fp指向的文件)v 从fp指向的文件读/写一个字符串v 返值:l fgets正常时返回读取字符串的首地址;出错或文件尾,返回NULLfputs正常时返回写入的最后一个字符;出错fgets从fp所指文件读n-1个字符送入s指向的内存区,并在最后加一个0(若读入n-1个字符前遇换行符或文件尾(EOF)即结束)fputs把s指向的字符串写入fp指向的
14、文件6.2.11 数据块I/O:fread与fwrite数据块I/O:fread与fwrite函数原型:size_t fread(void *buffer,size_t size, size_t count,FILE *fp)size_t fwrite(void *buffer,size_t size, size_t count,FILE *fp)功能:读/写数据块返值:成功,返回读/写的块数;出错或文件尾,返回0说明:typedef unsigned size_t;buffer: 指向要输入/输出数据块的首地址的指针size: 每个要读/写的数据块的大小(字节数)count: 要读/写的数据
15、块的个数fp: 要读/写的文件指针fread与fwrite 一般用于二进制文件的输入/输出6.2.12 格式化I/O:fprintf与fscanf格式化I/O:fprintf与fscanf函数原型:int fprintf(FILE *fp,const char *format,argument,)int fscanf(FILE *fp,const char *format,address,)v 功能:按格式对文件进行I/O操作v 返值:成功,返回I/O的个数;出错或文件尾,返回EOFv 例 fprintf(fp,“%d,%6.2f”,i,t); /将i和t按%d,%6.2f格式输出到fp文件v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 入门 第六 知识点 总结
限制150内