4组C语言中顺序读写文件的函数分享 |
您所在的位置:网站首页 › fscanf和fscanf_s函数的用法 › 4组C语言中顺序读写文件的函数分享 |
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 |