文件操作02 - 零基础入门学习C语言61
2011-04-14 20:00
661 查看
第十一章:文件操作01
让编程改变世界Change the world by program
文件的关闭(fclose函数)
函数调用:
fclose(文件指针);函数功能:
使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作。返回值:
关闭成功返回值为0;否则返回EOF(-1)文件的读写
对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:字符读写函数: fgetc 和 fputc
字符串读写函数: fgets 和 fputs
数据块读写函数: freed 和 fwrite
格式化读写函数: fscanf 和 fprinf
下面分别予以介绍。使用以上函数都要求包含头文件stdio.h。
fputc 和 fgetc
fputc()函数调用:
fputc ( ch,fp ) ;函数功能:
将字符(ch的值)输出到 fp 所指向的文件中去。对于fputc函数的使用要说明几点
用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。
[codesyntax lang="c"]
#include <stdio.h> #include <stdlib.h> void main() { FILE *fp; char ch, filename[20]; printf("Please input the filename you want to write: "); scanf("%s", filename); if( !(fp = fopen(filename, "wt+"))) { printf("Cannot open the file!n"); exit(0); // 终止程序 } printf("Please input the sentences you want to write: "); // ch = getchar(); // 请思考…… ch = getchar(); while( ch != EOF ) // ctrl + z { fputc(ch, fp); ch = getchar(); } fclose(fp); }
[/codesyntax]
每写入一个字符,文件内部位置指针向后移动一个字节。
fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。
fgetc()函数调用:
ch = fgetc(fp);函数功能:
其意义是从打开的文件 fp 中读取一个字符并送入 ch 中。对于fgetc函数的使用要说明几点
在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。在文件内部有一个位置指针。用来指向文件的当前读写字节。
在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。因此可连续多次使用fgetc函数,读取多个字符。
应注意文件指针和文件内部的位置指针不是一回事。
文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。
文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。
[codesyntax lang="c"]
#include <stdio.h> #include <stdlib.h> void main() { FILE *fp; char ch, filename[20]; printf("Please input the filename you want to write: "); scanf("%s", filename); if( !(fp = fopen(filename, "r"))) { printf("Cannot open the file!n"); exit(0); // 终止程序 } while( ch != EOF ) // ctrl + z { ch = fgetc(fp); putchar(ch); } fclose(fp); }
[/codesyntax]
知识补充
从一个文本文件顺序读入字符并在屏幕上显示出来:
[codesyntax lang="c"]ch = fgetc(fp); while( ch != EOF ) { putchar(ch); ch = fgetc(fp); }
[/codesyntax]
注意:EOF不是可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现 -1,因此EOF定义为-1是合适的。
当读入的字符值等于-1 时,表示读入的已不是正常的字符而是文件结束符。
从一个二进制文件顺序读入字符:
[codesyntax lang="c"]while( !foef(fp) ) { ch = fgetc(fp); }
[/codesyntax]
注意:ANSI C提供一个feof()函数来判断文件是否真的结束。如果是文件结束,函数feof(fp)的值为1(真);否则为0(假)。以上也适用于文本文件的读取。
理论要付诸于实践
作业:图片、文件合成器!
由波多野结衣姐姐的故事说起~图片文件合成器.c (下载源代码)
[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/LLKNIXTQAUDZ']视频下载[/Downlink]
相关文章推荐
- 文件操作02 - 零基础入门学习C语言61
- 文件操作04 - 零基础入门学习C语言63
- 文件操作01 - 零基础入门学习C语言60
- 文件操作01 - 零基础入门学习C语言60
- 文件操作03 - 零基础入门学习C语言62
- 文件操作03 - 零基础入门学习C语言62
- 文件操作04 - 零基础入门学习C语言63
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- 数组02 - 零基础入门学习C语言24
- 数组02 - 零基础入门学习C语言24
- 分支程序设计02 - 零基础入门学习C语言11
- 循环控制结构程序02 - 零基础入门学习C语言17
- 分支程序设计02 - 零基础入门学习C语言11
- 循环控制结构程序02 - 零基础入门学习C语言17
- 位运算02 - 零基础入门学习C语言65(完)
- 顺序程序设计02 - 零基础入门学习C语言08
- c语言学习之基础知识点介绍(十六):文件操作
- 位运算02 - 零基础入门学习C语言65(完)
- 顺序程序设计02 - 零基础入门学习C语言08