| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2197 人关注过本帖
标题:[转贴]C程序读书笔记
只看楼主 加入收藏
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
第十二章 文件

1) 概述

c语言将文件看成一个字符的序列,分为ASCII文件(文本文件)和二进制文件。即一个c文件就是一个字节流或二进制流。
ASCII文件每一个字节放一个ASCII码,代表一个字符,输出与字符一一对应,便于逐个处理字符,但占用空间较多。二进制文件按内存中的存储形式原样输出到磁盘上,节省空间,由于输出与字符不对应,不能直接输出字符形式,一般用于保存中间结果。目前c对文件的处理只有缓冲文件系统一种方法,即无论是从程序到磁盘文件还是从磁盘文件到程序,数据都要先经过缓冲区,待缓冲区充满后,才集中发送。

2) 文件夹类型指针

在缓冲文件系统中,关键的概念是文件指针。因为每个被使用的文件都在内存中开辟一个缓冲区,来存放文件有关信息。这些信息保存在一个结构体变量中,该结构体类型是由系统定义的,取名为FILE,在stdio.h中定义。
FILE *fp;
定义了一个文件指针变量fp,以后对文件的操作都是通过fp进行的。

3) 文件的打开与关闭

在对文件读写之前,要先打开文件。
打开文件的函数为:fopen(),调用方式为:
FILE *fp;
fp=fopen( filename,使用文件方式 );
fopen()失败返回一个空指针NULL,成功则返回一个指向"filename"的文件指针,赋给fp,这样fp就和打开的文件联系在一起了。或者说,fp指向了"filename"。
文件使用方式:r,w,a,rb,wb,ab,r+,w+,a+,rb+,wb+,ab+,具体含义要记住。

4)文件的关闭

为了防止数据丢失,程序结束前,务必将打开的文件关闭,即将文件指针与文件脱钩。用fclose(文件指针)函数关闭文件,执行函数后,先将缓冲区中的数据送到磁盘文件,然后释放文件指针。成功返回0,失败返回非0。

5)文件的读写

文件打开后,就可以对其读写了,常用的文件读写函数有:
①fputc和fgetc
fputc将一个字符写到文件,形式为fputc( ch, fp );将字符ch写入fp所指向的文件。成功返回该字符,失败返回EOF,EOF在stdio.h中定义为符号常量-1。
fgetc从指定文件读入一个字符,该文件必须是以读或读写方式打开的。调用形式为ch=fgetc(fp);从fp指向的文件读入一个字符赋给ch,当文件结束时,fgetc返回一个EOF,我们可以用函数feof(fp)来判断是否已到文件尾,返回1表示已到文件尾,否则返回0。这个函数适用于文本文件和二进制文件。
②fread和fwrite函数
可以读写一组数据。调用形式如下:
fread( buffer, size, count, fp );
fwrite( buffer, size, count, fp );
buffer为一个指针,对fread来讲,是指从文件读出数据的存放地址,对fwrite来讲,是要写入文件的数据的地址。
size 要读写的字节数
count 要进行读写多少个size字节的数据项(书上这么说)其实就是读写的次数
fp 文件指针
这两个函数返回值成功为1,失败为非1,一般用于二进制文件的读写。
注意:有些c编译系统不具备这两个函数。
③fprintf()和fscanf()函数
格式化输出和输入函数,与printf()和scanf()作用相似,只有一点不同,fprintf()和fscanf()的读写对象不是终端而是磁盘文件。调用方式:
fprintf(文件指针,格式字符串,输出列表);
fscanf(文件指针,格式字符串,输出列表);
④fgets()和fputs()函数
作用是读写一个字符串,如:
fgets(str,n,fp);
意为从fp指向的文件读出n-1个字符,存放到str中,成功返回str的首地址。
fputs( "China", fp );
把字符串China写入fp指向的文件。成功返回0,失败为非0。

6)文件的定位

文件中有一个位置指针,指向当前读写的位置,如果要强制改变位置指针的位置,可以用有关函数:
①rewind 使位置指针重新返回文件的开头
②fseek()
fseek()函数可以任意改变位置指针的位置,以实现随机读写文件。调用形式:
fseek( 文件指针类型,位移量,起始点 );
起始点有以下三个值:
SEEK_SET或0 文件开始
SEEK_CUR或1 文件当前位置
SEEK_END或2 文件末尾
位移量指以起始点为基点,移动的字节数(正数向文件尾移动,负数向文件头移动),一般位移量用long型数据,以避免大于64K的文件出错。Fseek()函数一般用于二进制文件,因为文本文件要进行字符转换,计算时会发生混乱。
Fseek( fp, 100L, 0 ); 将位置指针从文件头向文件尾移动100个字节处。
Fseek( fp, 50L, 1 ); 将指针从当前位置向文件尾移动50个字节处。
Fseek( fp, -10L, 2 ); 将指针从文件尾向文件头移动10个字节处。
③ftell()
得到流式文件位置指针的当前位置,成功返回相对于文件头的位移量,失败返回-1L。
另外,由于ANSI C不使用非缓冲文件系统,而其它C系统还用到非缓冲文件系统,所以对于这一章节只是略微的看了一下,不至于以后见到这样的程序不认识,呵呵。这一节主要讲了几个文件读写的有关函数,看了也没做笔记。如果关心的话,自己看一下吧。
  至此,这本语言类的基础书又温习了一遍,由于工作太忙,花了我半个月的时间。不过总的来说,收获还是很大的,有很多以前没有发现的新东西,也有很多以前理解较浅显的东西,这次加深了理解。其实,看完了一章后,最好将书后的习题一一解答,因为这是对这章知识点的考查。同时,动手编一下小程序,也能提高自己的编程能力。

 
2006-04-19 23:40
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
大家看了或者拿走了,还是支持一下塞
2006-04-20 14:23
寒月逍
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-4-20
收藏
得分:0 
支持
2006-04-20 15:03
adsl0231
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2006-3-29
收藏
得分:0 
怎么没2和6啊 老大 请尽快补以下 谢谢

2006-04-20 16:45
cwjhappy
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-4-20
收藏
得分:0 
呵呵,不错啊
2006-04-20 16:49
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
马上补上
2006-04-20 17:04
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
第六章 数组

1. 一维数组

c规定只有静态存储(static)和外部存储(extern)数组才能初始化。给数组初始化时可以不指定数组长度。

2. 二维数组

3. 字符数组

部分字符串处理函数
puts(字符数组) 将一个字符串输出到终端。
gets(字符数组) 从终端输入一个字符串到字符数组,并且得到一个函数值,为该字符数组的首地址
strcat(字符数组1,字符数组2) 连接两个字符数组中的字符串,数组1必须足够大。
Strcpy(字符数组1,字符串2)  将字符串2拷贝到字符数组1中。
Strcmp(字符串1,字符串2) 比较字符串,相等返回0,字符串1>字符串2,返回正数,小于返回负数。
Strlen(字符数组) 求字符串长度。
Strlwr( 字符串) 将字符串中的大写字母转换成小写
Strupr( 字符串)  将字符串中的小写字母转换成大写
以上是一些比较常用的字符串处理函数。
2006-04-20 17:07
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
第二章 数据类型、运算符与表达式

1. C的数据类型

C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

2. 常量与变量

常量其值不可改变,符号常量名通常用大写。变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。否则为不合法的变量名。变量在编译时为其分配相应存储单元。

3. 整型数据

整型常量的表示方法:十进制不用说了,八进制以0开头,如0123,十六进制以0x开头,如0x1e。
整型变量分为:基本型(int)、短整型(short int)、长整型(long int)和无符号型。不同机器上各类数据所占内存字节数不同,一般int型为2个字节,long型为4个字节。

4. 实型数据

实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:0.12、.123、123.、0.0等。指数形式如123e3代表123×10的三次方。
实型变量分为单精度(float)和双精度(double)两类。在一般系统中float型占4字节,7位有效数字,double型占8字节,15~16位有效数字。

5. 字符型数据

字符变量用单引号括起来,如'a','b'等。还有一些是特殊的字符常量,如'\n','\t'等。分别代表换行和横向跳格。
字符变量以char 来定义,一个变量只能存放一个字符常量。
字符串常量是由双引号括起来的字符序列。这里一定要注意'a'和"a"的不同,前者为字符常量,后者为字符串常量,c规定:每个字符串的结尾加一个结束标志'',实际上"a"包含两个字符:'a'和''。

6. 数值型数据间的混合运算

整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则:
char,short -> int -> unsigned -> long -> double <- float

7. 运算符和表达式

c运算符包括:
算数运算符( + - * / % )
关系运算符( > < == >= <= != )
逻辑运算符( ! && || )
位运算符( << >> ~ | ^ & )
赋值运算符( = )
条件运算符( ? : )
逗号运算符( , )
指针运算符( * & )
求字节数( sizeof )
强制类型转换(类型)
分量运算符( . -> )
下标运算符( [ ] )
其它运算符( 如函数调用运算符( ) )
自增自减运算符( ++ -- )注意:++i和i++的不同之处,++i使用i之前先使i加1,i++使用i之后,使i加1。
逗号表达式的求解过程:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值。
2006-04-20 17:08
龙轩v亚风
Rank: 1
等 级:新手上路
威 望:1
帖 子:1073
专家分:0
注 册:2006-4-20
收藏
得分:0 
C这么看 我一定头大 呵呵

狂风扫落叶,扫把都失业!拍卖QQ:559372
2006-04-20 17:55
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
要学还是得看
2006-04-20 18:57
快速回复:[转贴]C程序读书笔记
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016907 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved