c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)
文章目录
- fopen函数
- 描述
- 声明
- 参数
- 返回值
- 实例
- fwrite函数
- 描述
- 声明
- 参数
- 返回值
- 实例
- fread函数
- 描述
- 声明
- 参数
- 返回值
- 实例
- fclose函数
- 描述
- 声明
- 参数
- 返回值
- 实例
- 其余
fopen函数
描述
C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。
声明
下面是 fopen() 函数的声明。
FILE *fopen(const char *filename, const char *mode)参数
- filename – 这是 C 字符串,包含了要打开的文件名称。
- mode – 这是 C 字符串,包含了文件访问模式,模式如下:
如果是wb+,则表示以二进制(读写)方式写入,参考:fopen中w w+ wb区别
“rt” 只读打开一个文本文件,只允许读数据“wt” 只写打开或建立一个文本文件,只允许写数据“at” 追加打开一个文本文件,并在文件末尾写数据“rb” 只读打开一个二进制文件,只允许读数据“wb” 只写打开或建立一个二进制文件,只允许写数据“ab” 追加打开一个二进制文件,并在文件末尾写数据“rt+” 读写打开一个文本文件,允许读和写“wt+” 读写打开或建立一个文本文件,允许读写“at+” 读写打开一个文本文件,允许读,或在文件末追加数据“rb+” 读写打开一个二进制文件,允许读和写“wb+” 读写打开或建立一个二进制文件,允许读和写“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据对于文件使用方式有以下几点说明:1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read): 读w(write): 写a(append): 追加t(text): 文本文件,可省略不写b(banary): 二进制文件+: 读和写2. 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。3. 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。如果成功的打开一个文件, fopen()函数返回文件指针, 否则返回空指针(NULL)。由此可判断文件打开是否成功。 fclose()函数用来关闭一个由fopen()函数打开的文件 , 其调用格式为:int fclose(FILE *stream);该函数返回一个整型数。当文件关闭成功时, 返回0, 否则返回一个非零值。可以根据函数的返回值判断文件是否关闭成功。参考文章:fopen 参数讲解
返回值
该函数返回一个 FILE 指针。否则返回 NULL,且设置全局变量 errno 来标识错误。
实例
下面的实例演示了 fopen() 函数的用法。
#include <stdio.h> #include <stdlib.h>int main() {FILE * fp;fp = fopen ("file.txt", "w+");fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);fclose(fp);return(0); }让我们编译并运行上面的程序,这将创建一个带有一下内容的文件 file.txt:
We are in 2014现在让我们使用下面的程序查看上面文件的内容:
#include <stdio.h>int main () {FILE *fp;int c;fp = fopen("file.txt","r");while(1){c = fgetc(fp);if( feof(fp) ){ break ;}printf("%c", c);}fclose(fp);return(0); }参考文章:C 库函数 - fopen()
fwrite函数
描述
C 库函数 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。
声明
下面是 fwrite() 函数的声明。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)参数
ptr -- 这是指向要被写入的元素数组的指针。 size -- 这是要被写入的每个元素的大小,以字节为单位。 nmemb -- 这是元素的个数,每个元素的大小为 size 字节。 stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。返回值
如果成功,该函数返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与 nmemb 参数不同,则会显示一个错误。
实例
- 下面的实例演示了 fwrite() 函数的用法。
让我们编译并运行上面的程序,这将创建一个文件 file.txt,它的内容如下:
This is runoob.com- 现在让我们使用下面的程序查看上面文件的内容:
参考文章:C 库函数 - fwrite()
fread函数
描述
C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取数据到 ptr 所指向的数组中。
声明
下面是 fread() 函数的声明。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)参数
ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。 size -- 这是要读取的每个元素的大小,以字节为单位。 nmemb -- 这是元素的个数,每个元素的大小为 size 字节。 stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。返回值
成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。
实例
下面的实例演示了 fread() 函数的用法。
#include <stdio.h> #include <string.h>int main() {FILE *fp;char c[] = "This is runoob";char buffer[20];/* 打开文件用于读写 */fp = fopen("file.txt", "w+");/* 写入数据到文件 */fwrite(c, strlen(c) + 1, 1, fp);/* 查找文件的开头 */fseek(fp, 0, SEEK_SET);/* 读取并显示数据 */fread(buffer, strlen(c)+1, 1, fp);printf("%s\n", buffer);fclose(fp);return(0); }让我们编译并运行上面的程序,这将创建一个文件 file.txt,然后写入内容 This is runoob。接下来我们使用 fseek() 函数来重置写指针到文件的开头,文件内容如下所示:
This is runoobfclose函数
描述
C 库函数 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。
声明
下面是 fclose() 函数的声明。
int fclose(FILE *stream)参数
- stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了要被关闭的流。
返回值
如果流成功关闭,则该方法返回零。如果失败,则返回 EOF。
实例
下面的实例演示了 fclose() 函数的用法。
#include <stdio.h>int main() {FILE *fp;fp = fopen("file.txt", "w");fprintf(fp, "%s", "这里是 runoob.com");fclose(fp);return(0); }让我们编译并运行上面的程序,这将创建一个文件 file.txt,然后写入下面的文本行,最后使用 fclose() 函数关闭文件。
这里是 runoob.com参考文章:C 库函数 - fclose()
其余
fwrite 和 fread函数的用法小结
总结
以上是生活随笔为你收集整理的c语言 fopen、fwrite、fread、fclose函数(打开文件进行读写覆盖或追加)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【视频基础】封装格式和编码格式
- 下一篇: VisualStudio opencv配