您的位置:首页 > 编程语言 > C语言/C++

文件操作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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: