| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 937 人关注过本帖
标题:
只看楼主 加入收藏
大口木瓜
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2007-5-25
收藏
 问题点数:0 回复次数:12 

该帖子也自杀

[此贴子已经被作者于2007-11-7 18:01:50编辑过]

搜索更多相关主题的帖子: 自杀 
2007-11-04 22:33
大口木瓜
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2007-5-25
收藏
得分:0 
自己删除了

[此贴子已经被作者于2007-11-7 18:00:46编辑过]

2007-11-04 22:53
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

FILE *p
故名思议 文件指针。(其实指向的是数据流,对于C这就是文件)


//------------------------------------------------------------------------------

宏 EXIT_SUCCESS 程序成功终止
宏 EXIT_FAILURE 程序非成功终止

//------------------------------------------------------------------------------

/----------------------------------------------------------\
| 标准文件及与其相关联的文件指针 |
|----------------------------------------------------------|
| 标 准 文 件 文 件 指 针 一般使用的设备 |
| 标准输入 stdin 键盘 |
| 标准输出 stdout 显示器 |
| 标准错误输出 stderr 显示器 |
\----------------------------------------------------------/

//------------------------------------------------------------------------------

FILE * fp;
char fname[33] = "文件名";

if((fp = fopen(fname, "r")) != NULL) // 如果成功打开文件
{
}
fclose(fp); // 关闭fp指向的文件

//------------------------------------------------------------------------------


FILE * fp;
char arr[7] = "文件名";
fp = fopen(arr, "r");

if(fp != NULL)
fclose(fp); // 关闭fp指向的文件

ch = getc(stdin); // 相当于 getchar(); 一般 getchar() 是由 getc() 函数定义的
putc(ch, stdout); // 相当于 putchar(ch); 一般 putchar() 是由 putc() 函数定义的


//------------------------------------------------------------------------------

fopen() 接受两个参数,第一个是文件名字符串,第二个是打开方式
如果没有成功打开文件,fopen() 函数返回 NULL,
否则返回 FILE 指针

//--------------------------------------------------------------------//
// 表 13.1 fopen()函数的模式字符串 //
//--------------------------------------------------------------------//
// 模式字符串 | 意义 //
//--------------------------------------------------------------------//
// "r" | 打开一个文本文件,可以读取文件 //
//--------------------------------------------------------------------//
// "w" | 打开一个文本文件,可以写入文件,先将文件的长度截 //
// | 为零。如果该文件不存在则先创建之 //
//--------------------------------------------------------------------//
// "a" | 打开一个文本文件,可以写入文件,向已有文件的结尾 //
// | 追加内容,如果该文件不存在则先创建之 //
//--------------------------------------------------------------------//
// "r+" | 打开一个文本文件,可以进行更新(读取和写入) //
//--------------------------------------------------------------------//
// "w+" | 打开一个文本文件,可以进行更新(读取和写入),如 //
// | 果该文件存在则首先将其长度截为零;如果不存在则先 //
// | 创建之 //
//--------------------------------------------------------------------//
// "a+" | 打开一个文本文件,可以进行更新(读取和写入),向 //
// | 已有文件的尾部追加内容,如果该文件不存在则先创建 //
// | 之;可以读取整个文件,但写入时只能追加内容 //
//--------------------------------------------------------------------//
// "rb", "wb", | 与前面的模式相似,只是使用二进制模式而非文本模式 //
// "ab", "r+b", | 打开文件 //
// "w+b", "a+b", | //
// "rb+", "wb+", | //
// "ab+" | //
//--------------------------------------------------------------------//

fclose() 接受一个参数,函数关闭 fopen() 函数打开的文件
如果文件成功关闭,fclose() 返回值0,否则返回 EOF
磁盘已满、磁盘被移走或者I/O错误等等都会导致 fclose() 函数执行失败。

//------------------------------------------------------------------------------


fprintf() 与printf() 相似 但需要第一个 FILE 指针参数来指定要操作的文件
fprintf(stdout, "COS.\n"); 等同与 printf("COS.\n");

fscanf() 与scanf() 相似 但需要第一个 FILE 指针参数来指定要操作的文件
fcanf(stdin, "%s", words); 等同与 scanf("%s", words);

fgets() fgets(words, 5, stdin); 第一个是字符串数组名,第二个是字符串大小,
第三个是 FILE 指针

fputs() fputs(words, stdout); 第一个是字符串数组名,第二个是 FILE 指针

getc() getc(fp) 接受一个 FILE 指针参数,返回指向的 char 字符

putc() putc(ch, stdout) 接受2个参数,第一个参数是一个字符,第二个参数是
FILE 指针参数。

//------------------------------------------------------------------------------

rewind() 接受一个 FILE 指针参数 作用是:回到文件开始处

/-------------------------------------------------\
| 文件的起始点模式 |
|-------------------------------------------------|
| 模 式 偏移量的起始点 |
| SEEK_SRT 文件开始 |
| SEEK_CUR 当前位置 |
| SEEK_END 文件结尾 |
\-------------------------------------------------/


fseek() fseek() 接受3个参数,返回 int 值。
第一个参数是一个指向被搜索文件的 FILE 指针。因该已经使用 fopen()
打开了该文件。
第二个参数成为偏移量(offset),表示从起始点开始要移动的距离
这个参数必须是一个 long 类型的值,可以为正(前移)、负(后移),
也可以为零(保持不动)。
第三个参数是模式,用来标识起始点。在ANSI下,stdio.h 头文件制定了下
列模式敞亮:
模式 偏移量的起始点
SEEK_SET 文件开始
SEEK_CUR 当前位置
SEEK_END 文件结尾
以前实现中可能没有这些定义,而是用数字值0L、1L和2L分别代表
这些模式。(L 后缀标识 long 类型值)
函数允许您像对待数组那样对待一个文件,在 fopen() 打开的文件中直接移
动到任意字节处。
fseek(fp, 0L, SEEK_SET); // 找到文件的开始处
fseek(fp, 10L, SEEK_SET); // 找到文件的第11个字节
fseek(fp, 2L, SEEK_CUR); // 从文件的当前位置向前移动2个字节
fseek(fp, 0L, SEEK_END); // 到达文件结尾处
fseek(fp, -10L, SEEK_END); // 从文件结尾处退回10个字节
如果一切正常,fseek()的返回值为0。如果有错误出现,例如试图移动超
出文件范围,则fseek()的返回值为-1。

ftell() 函数以一个 long 类型值返回一个文件的当前位置。在ANSIC下,ftell()函数
在stdio.h头文件中被声明。像最初在UNIX中实现的那样,ftell()函数通过返
回局文件开始处的字节数目来确定文件的位置。文件的第一个字节到文件开始
处的距离是字节0,依次类推。 在ANSI C下,这种定义适用于一二进制模式打
开的文件,但是对于以文本模式打开的文件来讲,不一定是这样。
ANSI C规定,对于文本模式,ftell()返回一个可以用作fseek()的第二个
参数的值。例如,MS-DOS,ftell()返回一个将\r\n看成一个字节的计数值。


//----------------------------------------------------------------------------//

fseek() 和 ftell() 函数的一个潜在问题是它们限制文件的大小只能在 long类型
的表示范围之内。随着日益增长的存储设备容量使得更大的文件也成为可能。
ANSI C引入了两个用来处理较大文件的新的定位函数。这两个函数不是采用long类
型,而是使用一种称为 fpos_t(代表 file position type,文件定位类型)的新类型
来代表位置。fpos_t不是一种基本类型,而是通过其他类型定义的。一个fpos_t类型的
变量或者数据对象可以用来制定文件中的一个位置,它不能是一种数组类型,但除此之
外不再有其他限制。因此C实现可以提供一种满足特殊平台需要的类型; 例如,这种类
型可以作为结构来实现。

ANSI C定义了使用fpos_t的方法。fgetpos() 函数具有下面的原型:

int fgetpos(FILE * restrict stream, fpos_t * restrict pos);

被调用时,该函数在pos所指的位置放置一个fpos_t值;这个值描述了文件中的一个
位置。如果成功,函数返回0,否则返回一个非零值。

fsetpos() 函数具有下面的原型:

int fsetpos(FILE * stream, const fpos_t * pos);

被调用时,该函数使用 pos指向的位置上的那个fpos_t值设定文件指针指向该值所指
示的位置。如果成功,函数返回0;否则返回一个非零值。这个fpos_t值应是通过调用
fgetpos() 函数获得的。

fgetpos()

fsetpos()

//----------------------------------------------------------------------------//




//----------------------------------------------------------------------------//

二进制I/O:fread() 和 fwrite() 函数

//----------------------------------------------------------------------------//


fwrite()函数的原型是:
size_t fwrite(const void * restrict ptr,
size_t size,
size_t nmemb,
FILE * restrict fp
);

fwrite() 函数将二进制数据写入文件。size_t类型是根据标准C类型定义的。
它是sizeof运算符返回的类型,通常是unsigned int类型,不过具体的实现中可以
选择其他类型。
指针 ptr 是要写入的数据块的地址。size 表示要写入的数据块的大小(以字
节为单位)。nmemb 表示数据块的数目。fp 指定要写入的文件。 例如,要保存一
个 256 字节大小的数据对象(例如一个数组),可以这样做:

char arr[256];
fwrite(arr, 256, 1, fp);

这个函数调用将一块 256 字节大小的数据块从缓冲区写入到文件。

或者
double ent[10];
fwrite(ent, sizeof(double), 10, fp);

这个函数调用将 ent 数组中的数据写入文件,数据分成10块,
每块都是 double 大小。

fwrite() 中的 void * ptr。

fwrite() 的一个问题就是它的第一个参数不是一个固定类型。
在 ANSI C 函数原型下,这些实际参数都被转换成为指向 void 的指针,这种
指针可以作为一种普通的指针类型工作(ANSI C以前的C对这一参数使用char * 类
型,需要将实际参数的类型指派为这一类型)。

fwrite()函数返回成功写入的项目数。 正常情况下,它与nmemb相等,不过如
果有写入错误的话返回值就会小于 nmemb。

//----------------------------------------------------------------------------//

fread() 函数的原型是:
size_t fread(void * restrict ptr,
size_t size,
size_t nmemb,
FILE * restrict fp
);
ptr 为存储读入的文件数据的内存地址,fp 制定要读取的文件。
使用这个函数来读取通过 fwrite() 写入的文件数据。

例如,要恢复前一个例子中保存的包含10个double值的数组,可以使用以下函数
用调:

fread(ent, sizeof(double), 10, fp);

该调用将10个double值复制到ent数组中。

fread() 函数返回成功读入的项目数。正常情况下,它与 nmemb 相等;不过
如果有读取错误的话,返回值就会小于 nmemb。

//----------------------------------------------------------------------------//

int feof(FILE * fp) 和 int ferror(FILE * fp) 函数
当标准输入函数返回 EOF 时,通常表示已经到达了文件结尾。 可是,这也有
可能表示发生了读取错误。使用 feof() 和 ferror() 函数可以区分这两种可能性。
如果最近一次输入调用监测到文件结尾, feof() 函数返回一个非零值,否则返回
零值。如果发生读取错误,ferror() 函数返回一个非零值,否则返回零值。

//----------------------------------------------------------------------------//

[此贴子已经被作者于2007-11-4 23:05:38编辑过]


—>〉Sun〈<—
2007-11-04 22:59
大口木瓜
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2007-5-25
收藏
得分:0 
自己删除了

[此贴子已经被作者于2007-11-7 18:00:35编辑过]

2007-11-05 12:10
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
一种特殊的指针类型---文件指针.

倚天照海花无数,流水高山心自知。
2007-11-05 12:55
大口木瓜
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2007-5-25
收藏
得分:0 

自己删除了

[此贴子已经被作者于2007-11-7 17:59:46编辑过]

2007-11-05 16:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
定义文件指针指向你要打开的文件
判断是否打开成功

把结果对文件输入

关闭文件

具体的东西要看书啦.

倚天照海花无数,流水高山心自知。
2007-11-05 19:01
NS2007
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-10-14
收藏
得分:0 
建议你看看谭浩强的c,里面的文件已经讲得比较清楚了
2007-11-05 21:51
LOvE老鼠YoU
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-5
收藏
得分:0 
谭浩强的是什么麻烦各位,发一下给我,小弟在这里谢过
QQ 501802904.
2007-11-06 11:49
hanzhu3366
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:741
专家分:3
注 册:2007-10-12
收藏
得分:0 
ls 的可以到百度下点谭浩强的C书籍!  

偶滴淘宝小店,主要经营女装、男装、话费充值哦http://hanzhu3366.taobao. com
2007-11-06 11:56
快速回复:
数据加载中...
 
   



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

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