文本流和二进制流之间的主要差异是,　在文本流中输入输出的数据是字符或字符串,可以被修改,而二进制流中输入输出的是一系列二进制的0、1代码,不能以任何方式修改。　文件　(1)文件的概念　文件是指存储在外部介质上的数据的集合。一个文件需要有唯一确定的文件标识,以使用户根据标识找到唯一确定的文件,方便用户对文件的识别和引用。文件标识包含三个部分,分别为文件路径、文件名主干、文件扩展名。　操作系统以文件为单位,对数据进行管理,若想找到存放在外部介质上的数据,必须先按照文件名找到指路径定的文件,再从文件中读取数据。　(2)文件的分类　计算机中的文件分为两类,一类为文本文件,另一类为二进制文件。　文本文件又称为ASCII文件,该文件中一个字符占用一个字节,存储单元中存放单个字符对应的ASCI1码。假设当前需要存储一个整数数据21,则该数据在磁盘上存放的形式　’2‘(50)01010000　‘1’　(49)00110001　文本文件中的每个字符都要占用一个字节的存储空间,并且在存储时需要进行二进制和ASCIl码之间的转换　,因此使用这种方式既消耗空间,又浪费时间。　数据在内存中是以二进制形式存储的,如果不加转换地输出到外存,则输出文件就是一个二进制文件。二进制文件是存储在内存的数据的映像,也称为映像文件。若使用二进制文件存储,则存储空间更少且不需要进行转换,如此既节省时间,又节省空间。但是这种存放方法不够直观,需要经过转后才能看到存放的信息。　文件的缓冲区　目前C语言使用的文件系统分为缓冲文件系统(标准1/O　)和非缓冲文件系统(系统I/O)ANSI　C标准采用“缓冲文件系统”处理文件。　听谓缓冲文件系统是指系统自动在内存中为正在处理的文件划分出了一部分内存作为区。当从磁盘读入数据时,数据要先送到输入文件缓冲区,然后再从缓冲区逐个把数据传送序中的变量;当从内存向磁盘输出数据时,必须先把数据装入输出文件缓冲区,装满之后,数据从缓冲区写到磁盘。　使用文件缓冲区可以减少磁盘的读写次数,提高读写效率。　文件指针　文件指针的定义格式如下:在C语言中,所有的文件操作都必须依靠指针来完成,因此在对文件进行操作之前,必须先使指针与文件建立联系。　FILE*变量名　一个文件指针变量只能指向一个文件,也就是说,要操作多少个文件,就要定义同样数量的文件指针　文件的打开与关闭　对文件进行读写之前,需要先打开文件;读写结束之后,则要及时关闭文件。　(1)打开文件　专门用于打开文件的函数fopen()函数,该函数的函数原型如下:　FILE*　fopen　(char*　filename,　char*　mode);　其中返回值类型FILE*表示该函数返回值为文件指针类型;参数flename用于指定文件的绝对路径,即用来确定文件包含路径名、文件名主干和扩展名的唯一标识;参数mode用于指定文件的打开模式。　文件正常打开时,函数返回指向该文件的文件指针;文件打开失败时,函数返回NULL。　FILE*　fp;fp.fopen　("D:\Itest.txt",");if　(fp==NULL){　printf　("File　open　error!\n");　exit　(0);}　一般在调用该函数之后,为了保证程序的健壮性,会进行一次判空操作　。　(2)关闭文件:类似于在堆上申请内存,文件在打开之后也需要一步对应操作,即关闭文件。　关闭文件的目的是释放缓冲区以及其他资源。若打开的文件不关闭,将会慢慢耗尽系统资源　C语言中专门用于关闭文件的函数fclose(),　fclose()函数的函数原型如下:　int　fclose(FILE*　fp)　该声明的返回值类型为int,如果成功关闭则返回0,否则返回EOF　(“end　of　tile”,是文件结束的标识,包含在头文件stdio.h中),函数中的参数fp表示待关闭的文件。　(3)文件的打开模式　打开模式　名称　描述　r/rb　只读模式　以只读的方式打开一个文本文件/二进制文件,如果文件不存在或无法找到　fopen()函数调用失败,返回NULL　w/wb　只写模式　以只写的方式创建一个文本文件/二进制文件,如果文件已存在,则创建新文件　a/ab　追加模式　以只写的方式打开一个文本文件/二进制文件,只允许在该文件末尾追加数据,如果文件不存在,则创建新文件　r+/rb+　读取/更新模式　以读/写的方式创建一个文本文件/二进制文件,如果文件不存在,　fopen)函数调用失败,返回NULL　w+/wb+　写入/更新模式　以读/写的方式创建一个文本文件/二进制文件,如果文件已存在,则重写文件　a+ab+　追加/更新模式　打开一个文本文件/二进制文件,允许进行读取操作,但只允许在文件末尾添加数据,若文件不存在,则创建新文件　6.写文件　文件分为文本文件和二进制文件,因为它们的存放形式不同,所以写文件的方法也不一样。　(1)写文本文件　在对文本文件进行写操作时,主要用到两个函数,分别为:　fputc()函数和fputs()函数。　①　fputc()函数　fputc()函数用于向文件中写入一个字符,其函数原型如下:　int　fputc　(char　ch,　FIIE　*fp);　其中ch表示写入的内容,fp表示待写入文件的指针,　int表示返回值类型。　②　fputs()函数　使用fputs()函数可以向文件中写入一个字符串(不自动写入字符串结束标记符’\0’),成功写入个字符后,文件位置指针会自动后移,函数返回值为非负整数,否则返回EOF。其函数原型如下:　int　fputs　(const　char*　str,　FILE　file);　其中参数str表示待写入的一行字符串;参数file表示待写入文件的指针;　int表示返回值类型。　(2)写二进制文件　对二进制文件写操作主要使用fwrite()函数,原型为:　unsigned　Int　fwrite　(const　void　str,　unsigned　int　size　,unsigned　int　count,　FILE　fil)　参数str表示待写写入数据的指针;参数size表示待写入数据的字节数;参数count表示待写写入数据个数;参数file表示待写入数据的文件指针;返回值的类型unsigned　int　为无符号整形。　文本模式下具有特殊意义的字符(如‘\n’、’\0’),在二进制模式下没有意义　。　(3)　fprint　()函数　除了从输入设备写入数据,还能从字符串中获取数据,写入文件中　7.　读文件　(1)读文本文件　fgetc()函数:用于从文件中读取一个字符　②　fgets()函数:每次从文件中读取一行字符串,或读取指定长度的字符串。　(2)读二进制文件　对二进制文件进行读操作主要使用fread()函数,　fread()函数用于在程序中以二进制的形式读取文件,其函数原型如下:　unsigned　int　fread　(void　dstBuf,　unsigned　int　elementsize,unsigned　int　count,　FILE*　file);　其中参数desBuf用于存储待接收数据的指针;参数elementSize表示要接收的数据项的字节数;参数count表示每次函数运行时要读取的数据项的个数;参数file为指向源文件的文件指针;返回值类型unsigned　int表示函数返回值的类型为无符号整型。　(3)　fscanf()函数　fscanf()函数用于从文件中格式化地读取数据,其函数原型如下:　int　fscan　(FILE*　file,　const　char　*　format,　.)　其中参数file表示指向文件的指针,参数format表示文件中的字符串输出时遵循的格式;返回值int表示函数返回值类型为整型。如果该函数调用成功,则返回输入的参数的个数;否则返回EOF。　举例说明该函数的用法:　Escant　(Ip,　“8sa”,　work,　age);　因为数据只能从实参传递给形参,其中的参数应为指针变量,所以需要对整型变量age进行取址操作。　7.　文件位置指针　为了对读写进行控制,系统为每个文件设置了一个位置指针,用于指示文件当前读写的位置该指针被称为文件位置指针。　当从文件头部开始,对文件进行顺序读写时,文件位置指针伴随着读写过程逐个后移,每读写一个数据,位置指针后移一个位置。下次读写开始时,系统会从文件位置指针指向的位置开始读写文件。　文件位置指针也可以人为移动,实现文件的随机读写。常用的控制文件位置指针的函数有三个;　seek)函数　fseek()函数的作用是将文件位置指针移动到指定位置,其函数原型如下:　int　fseek　(FILE*　fp,long　offset,int　origin);　其中参数tp表示指向文件的指针;参数offset表示以参数origin为基准使文件位置指针移动的偏移量;参数origin表示文件位置指针的起始位置,它有三个枚举值:　SEEK-SET:该参数对应的数值为0,表示从文件起始位置开始偏移。　SEEKEND:该参数对应的数值为2,表示相对于文件末尾进行偏移。　SEEK-CUR:该参数对应的数值为1,表示相对于文件位置指针当前所在位置进行偏移。　在调用该函数时,若调用成功则会返回0,若有错误则会返回-1,该函数一般用于二进制文件,因为对文本文件进行操作时,需要进行字符转换,对位置的计算可能会发生错误。　(2)　rewind()函数:可以将文件位置指针移动到文件的开头,其函数原型如下:　void　rewind　(FILE*　fp);　(3)　ftell()函数:获取文件位置指针当前指向的位置,其函数原型如下:　long　ftell　(FILE*　fр);　==　ftell()若调用成功,将返回文件位置指针当前所在的位量;若调用失败,则返回-1。==　第一章　C语言概述　课题　第一章　C语言概述　教学目的　1了解C语言出现的背景　2掌握　C语言程序　的构成书写格式和上机　步骤　教学重点　教学难点　C语言程序　的构成　上机操作　步骤　一　引入新课　从计算机应用基础中学过的计算机...　一、　C语言程序　 1)所有的C程序都有且只有一　个main()函数。C程序从main()函数处开始运行,当main()函数结束时,程序也就结束了。　2)程序最根本的功能是对数据的处理　二、程序与指令　1)计算机程序是用计算机...　C语言程序设计　(第四版)谭浩强　课后习题答案第二章2.1　什么是算法?试从生活中找到3　个　例子,描述他们的算法。2.2　什么是结构化的算法?为什么要提倡结构化的算法?2.3　略2.4　略2.5　略2.6　略2.7　略2.8(1)输出1900~...　C语言　经典　程序设计　,前面40道题都是比较基础的,后面的有点难~~~如果哪一　个　题目需要我详细注释的,可以留言我或加评论　经过这些年的开发,我深深的体会到　C语言　对于一　个程序设计　人员多么的重要,如果不懂　C语言　,你想写底层程序这几乎听起来很可笑,不懂　C语言　,你想写出优秀高效的程序,这简直就是天方夜谭。为什么　C语言　如此重要呢?　C语言程序设计　(第四版)课后习题答案　第2章1.什么是算法?　答:解决一　个　问题而采取的方法和　步骤　。　2.什么叫结构化的算法?为什么要提倡结构化算法?　答:　3.试述3种基本结构的特点,请另外设计两种基本结构(要...　C语言程序　从编写到执行输出结果一般需要6　个步骤　:编辑(edit)、预处理(preprocess)、编译(compile)、连接(link)、装载(load)、和执行(execute)。