4组C语言中顺序读写文件的函数分享

您所在的位置:网站首页 fscanf和fscanf_s函数的用法 4组C语言中顺序读写文件的函数分享

4组C语言中顺序读写文件的函数分享

2023-04-05 22:29| 来源: 网络整理| 查看: 265

4组C语言中顺序读写文件的函数分享

 

预备知识:fopen和fclose

如果我们要读写一个文件,就必须先打开这个文件,读写完后,还需要关闭这个文件。这就像,你要喝一杯水,需要先打开杯盖,才能喝水,喝完水后还需要把盖子盖上。

打开文件的原理是,打开文件后,在内存中创建一个FILE类型的变量,用来记录打开的文件的相关信息。FILE类型是一个结构体类型。

关闭文件的原理是,根据这个FILE类型的变量里描述的文件信息,通过一定手段把文件关闭。

在学习C语言的过程中,我们不需要知道具体的细节,会用就行了。C语言中打开文件需要使用函数fopen,关闭文件需要使用函数fclose。

fopen的声明如下:

FILE * fopen ( const char * filename, const char * mode );

看这个声明,可以了解到,第一个参数就是要打开文件的文件名,第二个参数是用什么方式打开(读?写?还是其他模式?)。函数会打开这个文件,在内存中创建一个相对应的文件信息区,其实就是创建一个FILE类型的变量,这个变量记录了文件的相关信息。接着,这个函数会返回这个FILE变量的地址,如果函数打开文件失败会返回NULL指针。

这里为了简单起见,都在工程目录下操作文件,所以文件名不用带上路径。如果要在其他位置操作文件,根据具体情况带上绝对路径或者相对路径就可以了。

假设我们要操作的文件的文件名是test.txt,我们想要写这个文件(写文件的模式是"w",及write的简写),可以这么调用这个函数:

FILE* pf = fopen("test.txt", "w");

这里的2个参数都用双引号引起,因为是字符串。返回值需要使用一个FILE*的指针来接收。和malloc类似,需要检查返回值是否为NULL指针,如果为NULL指针,则打开文件失败,需要进行错误处理,举个例子:

if (pf == NULL) { perror("fopen"); exit(1); }

以上的代码中,当检查到pf为NULL,此时打开文件失败,用perror报个错,再exit掉,终止进程。

当然,操作文件不只有"w"一种模式。本篇博客主要介绍比较常见的4种模式,分别是:

“w” - 写文件,即write的简写。“r” - 读文件,即read的简写。“wb” - 通过二进制的方式写文件,b是binary的缩写。“rb” - 通过二进制的方式读文件。

fclose函数的声明如下:

int fclose ( FILE * stream );

具体的使用很简单,前面我们用一个FILE*的指针来接收fopen函数的返回值,只需要把这个指针传给fclose就能关闭对应的文件了。和free函数类似,fclose函数没有能力把传给它的指针置为NULL,为了防止野指针,需要程序员手动置为NULL值。

fclose(pf); pf = NULL;

 

1.字符读写:fputc和fgetc

fputc用于向文件中写入一个字符。

读写文件前,应该打开文件。这次以"w"的模式打开。

FILE* pf = fopen("test.txt", "w"); if (pf == NULL) { perror("fopen"); exit(1); }

接下来是使用fputc写文件的操作。写完文件后,需要关闭文件。

fclose(pf); pf = NULL;

后面的函数都是按照打开文件->读写文件->关闭文件的顺序,唯一的区别是打开文件的方式不一样,也就是fopen的第二个参数不一样。

fputc的声明如下:

int fputc ( int character, FILE * stream );

很明显,第一个参数表示写入的字符,第二个参数表示指向文件信息区的文件指针。比如,如果我要把字符’a’写到pf对应的文件里,应该这么写:

fputc('a', pf);

举一反三:如果要把小写的a~z,总共26个字母写到文件中,应该如何写呢?

for (int ch = 'a'; ch


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3