文章目录
本次我们准备学习C语言中的文件操作。内存里的数据要持久保存,那么就必然会涉及到文件的读写操作。这也是C语言学习中比较重要的一部分内容,希望大家理解并掌握。
一、文件打开与关闭
(一)概述
- 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。在C语言中,文件操作都是由库函数来完成的。
(二)文件打开函数 - fopen()
1、调用格式
- 文件指针名 = fopen(文件名, 使用文件方式);
2、参数与返回值说明
参数 | 含义 |
---|---|
文件名 | 被打开文件的文件名 字符串常量或字符串数组 |
文件指针名 | 必须是被说明为FILE 类型的指针变量 |
使用文件方式 | 指文件的类型和操作要求 |
FILE *fp;
fp = fopen("test.txt", "r");
- 其意义是在当前目录下打开文件test.txt,只允许进行“读”操作,并使fp指向该文件。
FILE *fp;
fp = fopen("c:\\test.jpg", "rb")
- 打开C盘根目录下文件test.jpg,只允许按二进制方式进行读操作。两个反斜线“\ ”中的第一个表示转义字符,第二个表示根目录。
3、文件使用方式
参数 | 作用 |
---|---|
rt | 只读打开一个文本文件,只允许读数据 |
wt | 只写打开或建立一个文本文件,只允许写数据 |
at | 追加打开一个文本文件,并在文件末尾写数据 |
rb | 只读打开一个二进制文件,只允许读数据 |
wb | 只写打开或建立一个二进制文件,只允许写数据 |
ab | 追加打开一个二进制文件,并在文件末尾写数据 |
rt+ | 读写打开一个文本文件,允许读和写 |
wt+ | 读写打开或建立一个文本文件,允许读写 |
at+ | 读写打开一个文本文件,允许读,或在文件末追加数据 |
rb+ | 读写打开一个二进制文件,允许读和写 |
wb+ | 读写打开或建立一个二进制文件,允许读和写 |
ab+ | 读写打开一个二进制文件,允许读,或在文件末追加数据 |
- 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:
if ((fp = fopen("c:\\test.jpg", "rb") == NULL) {
printf("error on open c:\\test.jpg file!");
getch();
exit(1);
}
- 如果返回指针为空,表示不能打开C盘根目录下的test.jpg文件,则给出提示信息“error on open c:\test.jpg!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。该行作用是等待,只有当用户从键盘敲任一字符才继续执行后续语句。exit函数返回非零值表示有错误发生。
(二)文件关闭函数 - fclose()
1、调用格式
- fclose(文件指针名);
2、参数说明
- “文件指针名”必须是被说明为
FILE
类型的指针变量。
二、文件读写函数
三、案例演示
1、编写程序,实现功能
- 演示文件读写.c
/*
功能:演示文件读写
作者:华卫
日期:2013年12月3日
*/
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
char c;
//1. 写文件
// fopen("文件名","打开方式"); r--read, w--write, a--append
fp = fopen("c:/love.txt", "a"); //以追加方式打开文件
if(fp == NULL)
{
printf("文件无法打开!");
exit(0);
}
// fgetc()--从文件里读取一个字符, fputc()--往文件里写入一个字符
printf("输入字符串,以#结束:");
c = getchar(); //从键盘上输入一个字符
while (c != '#')
{
fputc(c, fp); //将字符变量c的内容写入fp指向的文件"c:\love.txt"
c = getchar(); //继续从键盘上输入一个字符
}
fputc('\n', fp); //每次输入完之后加一个换行符
fclose(fp); //关闭文件
/////////////////////////////////////
//2. 读文件
fp = fopen("c:/love.txt", "r");
if(fp == NULL)
{
printf("文件无法打开!");
exit(0);
}
while(!feof(fp))
{
c = fgetc(fp); //从文件里读取一个字符
putchar(c); //把这个字符显示在屏幕上
}
fclose(fp); //关闭文件
}
2、运行程序,查看结果
- 第一次运行,查看结果
- 第二次运行,查看结果
- 说明:因为写文件采用的是追加方式,所以文件c:\love.txt里最后会有两次次输入的内容。
四、课后作业
任务:完成文件复制
- 将C盘Windows目录下的win.ini文件复制到D盘根目录,同时在控制台输出该文件内容。