首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C 语言】文件操作 ( 使用 fread 和 fwrite 实现二进制文件的拷贝 | stat 统计文件大小 | feof 判定文件结尾 )

文章目录 一、stat 统计文件大小 二、feof 判定文件结尾 三、使用 fread 和 fwrite 实现二进制文件的拷贝 一、stat 统计文件大小 ---- 统计文件大小 , 需要借助 stat...结构 , 调用 stat 方法 , 将该结构的指针作为参数传入 , 文件的大小会写出到 stat 结构的 _off_t st_size 成员中 ; = struct stat { _dev_t..., 以及 struct stat 结构变量 , 即可统计文件的大小 , 最终将文件信息保存到结构中 ; stat 方法原型 : int __cdecl stat(const char *_Filename...---- 进行文件操作时 , 使用 feof 方法判定是否读取到了文件结尾 ; 参考 【C 语言】文件操作 ( 文件结尾判定 ) 博客 ; 代码示例 : // 判定文件指针是否指向文件末尾...feof(p_src)) { } 三、使用 fread 和 fwrite 实现二进制文件的拷贝 ---- 代码示例 : #include #include <stdlib.h

62910

C 语言】文件操作 ( 读取文件中的结构数组 | feof 函数使用注意事项 )

文章目录 一、读取文件中的结构数组 | feof 函数使用注意事项 二、代码示例 一、读取文件中的结构数组 | feof 函数使用注意事项 ---- 读取文件结构时 , 可以循环读取文件中的数据..., 只使用一个结构的内存空间即可 ; 使用 feof() 函数 判定当前是否读取到了文件结尾 , 如果读取到结尾 , 则退出不再读取数据 ; feof 函数原型 : #include...函数 , 向 文本文件 写出数据可以使用 putc , fputs , fprintf 函数 ; 读取 二进制文件 可以使用 fread 函数 , 向 二进制文件 写出数据可以使用 fwrite...// 要写入文件结构 struct student s1[2] = {{"Tom", 18}, {"Jerry", 20}}; // 打开要写入的文件 FILE...fwrite(s1, 2, sizeof (struct student), p); // 关闭文件 fclose(p); // 读取文件中的结构 /

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

c语言fread6,c语言中fread的用法「建议收藏」

fread是以记录为单位的i/o函数,fread和fwrite函数一般用于二进制文件的输入输出。下面小编就跟你们详细介绍下c语言中fread的用法,希望对你们有用。...fread用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构或者一个定长数组。...下面的例子由两个程序组成,一个程序把结构保存到文件中,另一个程序和从文件中读出结构 fread的例子程序如下: /* -------------------writerec.c-----------...原因:我们把一个struct record结构看作一条记录,由于结构中有填充字节,每条记录占16字节, 把两条记录写到文件中共占32字节。...注意,直接在文件中读写结构的程序是不可移植的,如果在一种平台上编译运行writebin.c程序, 把生成的recfile文件另一种平台并在该平台上编译运行readbin.c程序,则不能保证正确读出

70520

c语言基础学习10_文件操作02

十三、fseek函数 十四、ftell函数 十五、fflush函数 十六、remove函数 和 rename函数 (文件删除函数和文件改名函数) 十七、通过fwrite将结构保存到二进制文件中 课堂练习...fread的返回值是成功读取到的单位个数。 fread第二个参数代表了一个单位多大,第三个参数代表一次要读多少个单位。 功能:这两个函数以二进制形式对文件进行操作,不局限于文本文件。...所以需要小心使用。   其实FILE结构内部是有一个指针的,每次调用文件读写函数时,这些函数就会自动移动这个指针。   默认情况下该指针只能从前往后移动。...二进制文件读可以用:fread二进制文件写可以用:fwrite。 其实c语言所有的文件操作函数都是缓冲区函数。 即都是针对缓冲区进行操作的。 文件读写缓冲区的说明如下图所示: ?...NewFilename); ============================================================================= 十七、通过fwrite将结构保存到二进制文件

1.8K10

C进阶】如何对文件进行读写(含二进制)操作?

这些信息是保存在一个结构变量中的。...,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,我们可以直接拿来用这个FILE结构变量的。...这就用到了这两个函数来帮我们实现 fprintf fpintf与我们的printf长得很像,但其实用法也基本上一模一样,我们在用printf进行输出操作时,对于一个结构是这样输出的: 只不过这个...fwrite与fread fwrite是以二进制的形式写入数据 接下来我们把上面的结构二进制形式进行读写,看操作: struct stu { char name[20]; int age...return 1; } //二进制形式写 //&s表示被写入的数据地址,大小为一个结构大小,个数为1个,写到pf指向的文件信息区 fwrite(&s, sizeof(s), 1, pf)

51020

C语言进阶——文件操作

数据文件 就像上图一样,主要存储的是各种数据信息,数据文件的职能是能让程序读取到数据,以及能够对其写入数据,这些数据是能够持久化存储的。...,类似于结构,不过更为复杂,因此在C语言中有一个专门的指针 文件类型指针,简称为 文件指针 用来指向文件首地址。...前面说过,文件类似于结构,因此整个文件信息是保存在一个庞大的结构中的,为了与传统结构区分开,专门创建了 FILE* 这种特殊的指针,即文件指针。  ...因为VS2019将其分的太细了,这里不好演示,但知道 FILE 这个东西本质是个结构就行了  文件的打开和关闭   文件得先打开,才能关闭,最好跟动态内存管理一样,有申请就要有释放,成对出现更为安全。...单纯写文本数据时,要使用指令 "w" ;单纯读数据时,要使用指令 "r"  fwrite 与 fread   fwrite 是对文件进行二进制数据的写入,fread 是以二进制的形式读取文件中的数据 fwrite

21330

xmake v2.5.7 发布,包依赖锁定和 ValaMetal 语言编译支持

此外,我们还提供了一些比较实用的规则, 比如 utils.bin2c 可以让用户方便快速的内嵌一些二进制资源文件代码中去,以头文件的方式获取相关数据。...其中,number = true 设置,可以强制作为 number 而不是字符串值,否则默认会定义为 #define PTR_SIZE "4" 快速内嵌二进制资源文件代码 我们可以通过 utils.bin2c...规则,在项目中引入一些二进制文件,并且他们作为 c/c++ 头文件的方式提供开发者使用,获取这些文件的数据。...如果,我们的项目没有使用默认的 metal library,我们也可以通过上面提到的 utils.bin2c 规则,作为源文件的方式内嵌代码库中,例如: add_rules("utils.bin2c"...更新内容 新特性 #1534: 新增对 Vala 语言的支持 #1544: 添加 utils.bin2c 规则去自动从二进制资源文件产生 .h 头文件并引入 C/C++ 代码中 #1547: option

58110

C文件操作1】如何写入读取?fopen的6种组合参数怎么用?

C语言中文件操作,即文件打开,文件写入、文件读取、文件关闭等。 在使用这些功能时,需要了解其基本的使用规则,如: 文件读写前,必须先使用fopen函数打开文件。...r表示读,w表示写,都补充一个+,表示既能读也能写,看起来作用好像是一样。 但,区别就在于第1部分的r与w,一个是文件必须存在,一个是不存在则会先创建 疑问2:w与w+的作用有区别吗?...fclose(fp); printf("file read ok\r\n"); end: system("pause"); return 0; } 特殊示例 写入结构.../*定义结构*/ typedef struct { char name[256]; unsigned int page; float price; }BOOK; /*声明实例化一个结构对象...带w参数打开文件时,该文件会被先清空,若文件不存在会先创建。 带a参数打开文件时,写入内容将会在文件尾部添加,若文件不存在会先创建。 带b参数打开文件时,打开的是二进制文件

1.7K50

江哥带你玩转C语言 | 17-文件操作

.c文件就是以文本文件形式存放的 二进制文件 以补码格式存放。二进制文件是把数据以二进制数的格式存放在文件中的,其占用存储空间较少。..., 由于二进制文件存储的不是ASCII码, 所以解析出来之后是乱码 ---- 文件的打开和关闭 FILE 结构 FILE 结构是对缓冲区和文件读写状态的记录者,所有对文件的操作,都是通过FILE 结构完成的...,返回一个指向该文件缓冲的 FILE 结构指针。...// 注意: FILE结构中读写指针每读或写一个字符后都会往后移动 rewind(fp); char str[1024]; // 从fp中读取4个字符, 存入str...结构中的数据类型不统一,此时最适合用二进制的方式进行读写 读写单个结构 #include typedef struct{ char *name; int age

98100

CC++文件操作IO流

例如: c:\C++_code\test.txt 2、文件的打开和关闭 2.1 文件指针 在C语言的文件操作中,需要使用文件指针来对硬盘上的文件进行操作。...每个被使用文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构变量中的。...该结构类型是有系统声明的,取名为FILE。 以下是FILE结构的成员变量,不同编译器或许有不同的变量,但是大同小异。除此之外,FILE中会保存缓冲区、文件描述符等等。...FILE* f;//文件指针变量 定义f是一个指向FILE类型数据的指针变量。可以使pf指向某个文件文件信息区(是一个结构变量)。...3.1.4 fread和fwrite函数 fread和fwrite是以二进制的形式进行读写,即保存在文件的数据是二进制的形式保存的。

74230

C语言】文件相关操作

3、为什么要使用文件 我们前面学习了结构和动态内存管理的相关知识,假设我们现在要利用这些知识要写一个通讯录的小程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候...4、文件的打开和关闭 文件指针 每个被使用文件都会在内存中开辟一个对应的文件信息区,用来存放文件的相关信息(如文件的名字,状态及当前的位置等);这些信息被保存在一个结构变量中,该结构类型被系统声明为...FILE 每当我们打开一个文件的时候,系统会根据文件的相关信息自动创建一个FILE类型的结构变量,并填充其中的信息, 使用者不必关心细节;同时,这个FILE类型的结构变量一般都是通过一个FILE的指针来维护的...fclose(pf); pf = NULL; return 0; } 6、fwrite 与 fread 函数功能 fwrite:以二进制的形式向文件中写入数据;fread:以二进制的形式从文件中读取数据...我们以整数10000为例,我们知道,10000的二进制序列为 00000000 00000000 00100111 00010000,如果我们以二进制文件的形式存储,那么文件中的数据和内存中的数据一样,

2.8K00

C语言文件操作

这些信息是保存在一个结构变量中的。该结构类型是有系统声明的,取名FILE. 创建一个文件指针变量:FILE* pf; 定义pf是一个指向FILE类型数据的指针变量。...可以使pf指向某个文件文件信息区(是一个结构变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到在磁盘中的与它关联的文件。...格式化输入函数 fscanf 所有输入流 格式化输出函数 fprintf 所有输出流 二进制输入 fread 文件 二进制输出 fwrite 文件 ①fgetc和fputc,用于读取文件中的一个字符...和fwrite:以二进制的方式操作文件  由函数的定义可看出来,fwrite和fread使用的参数都是相同是。...第一个是文件变量,意思是从这个文件中读取或写入这个文件。第二个是读的数据的大小,字节。第三个是每次读取或写入多少个,按照类型来定,比如结构类型,每次写入多少个结构的内容,写一个就1,两个就2。

4K20

C】语言文件操作(一)

的内容, 剩下内容将放到【C】语言文件操作 (二)中介绍 1.为什么使用文件 使用文件可以将数据直接存放在电脑的硬盘上,使数据持久化。...每个被使用文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在一个结构变量中的。...该结构类型是有系统 声明的,取名FILE....对键盘和屏幕操作不像文件一样有打开和关闭的操作, 对任何一个c程序,只要运行起来就默认打开三个流 stdin - 标准输入流 - 键盘 stdout - 标准输出流 - 屏幕 stderr - 标准错误流...printf("%s\n", buf);//以字符串的形式打印结构 //能否将buf中的字符串,还原成一个结构数据呢?

21020

CC语言文件(包括:文件各种读写方式)「建议收藏」

文件的指针不是指向一段内存空间,而是指向描述有关这个文件的相关信息的一个文件信息结构,该结构定义在studio.h头文件中。...当然,也无需了解有关此结构的详细细节,只需要知道如何使用文件指针就行了。...声明文件指针变量的一般形式为: FILE* 文件型指针变量名; 其中,FILE应为大写;它实际上是由系统定义的一个结构,该结构中包含了文件名、文件使用方式、当前位置等信息。...比如: fread(fa,4,5,fp); 其意义是从fp所指向的文件中,每次读4个字节长度(int)送入fa指向的内存地址中去,连续读5次。也就是说,读5个int类型的数据fa指向的内存中。...fread()和fwrite()函数一般适用于二进制文件,它们是按数据块的大小来处理输入/输出的。

1.1K20

文件操作(二、scanffscanfsscanf​与printffprintfsprintf​、fseek与ftell与rewind、feof)

sscanf函数从arr数组中按照"%s %d %f"的格式读取数据,并分别赋值给tmp结构的三个成员 printf("%s %d %f\n", tmp.name, tmp.age, tmp.score...); // 打印tmp结构的三个成员的值,以验证是否成功从arr数组中读取了数据 return 0; } 二、fseek与ftell与rewind fseek​ 根据文件指针的位置和偏移量来定位文件指针...= EOF) // 标准C I/O读取文件循环​ // 使用fgetc函数从fp指向的文件中逐个字符地读取内容。...(a, sizeof * a, SIZE, fp); // 写 double 的数组​ // 使用fwrite函数将数组a的内容写入文件中。...size_t ret_code = fread(b, sizeof * b, SIZE, fp); // 读 double 的数组​ // 使用fread函数从文件中读取数据数组b中。

10810

C语言】看了这篇文章,如果你还不会文件操作的话,我把这篇文章给吃了(doge)

这些信息都是保存在一个结构变量当中的,该结构是由系统进行声明的,取名为:FILE 下面就是 vs 2013 当中编译环境所提供的 stdio.h 头文件中有以下文件类型声明↓ #ifndef...一般都是通过一个FILE的指针来进行维护这个结构变量,使用起来更加方便。...介绍完 fprintf()让我们来用代码示例讲解下,如何写入一个结构文件 放在 test.txt 文件上。...fclose(pf); pf = NULL; return 0; } 成功写入进去结构当中的结构类型的值\^o^/  //读文件 scanf(stdin,"%s %s %s %d",...对于二进制流,这是从文件开始的字节数。 对于文本流,数值可能没有意义,但仍然可以使用fseek将位置恢复相同的位置(如果使用ungetc返回的字符在被读取时仍然挂起,该行为是未定义的)。

75820

文件操作(File Operations)

每个被使用文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等),这些信息是保存在一个结构变量中的,该结构类型是由系统声明的,取名FILE.即...FILE是系统使用typedef定义出来的有关文件信息的一种结构类型,结构中含有文件名,文件状态和文件当前的位置信息等.  ...不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异,每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节,一般都是通过一个FILE...的指针来维护这个FILE结构的变量,这样使用起来更方便....第一个参数的几种形式:  第二个参数的几种形式(打开文件的方式):  注意:         1.b是二进制模式的意思,b只有在Windows有效,而Linux用 r 和 rb 结尾是一样的.

50610
领券