fopen , fread fwrite 函数读写二进制文件

合集下载

C语言实现二进制文件读写

C语言实现二进制文件读写

C语言实现二进制文件读写C语言中,实现二进制文件的读写主要借助于文件指针和文件操作函数。

二进制文件的读写相对于文本文件的读写要更复杂一些,因为二进制文件中存储的是字节流,而不是可见字符。

一、二进制文件的写入二进制文件的写入可以通过以下步骤实现:1. 打开文件:通过`fopen`函数以二进制写入模式打开文件,返回一个文件指针。

例如,`FILE *fp = fopen("data.bin", "wb");`即可打开名为"data.bin"的二进制文件。

2. 写入数据:通过`fwrite`函数向文件中写入数据。

该函数的参数包括待写入数据的存储地址、每个数据项的大小和待写入数据的数量。

例如,`int data[] = {1, 2, 3, 4, 5}; fwrite(data, sizeof(int), 5, fp);`即可将整型数组data的数据写入文件中。

3. 关闭文件:通过`fclose`函数关闭已打开的文件。

例如,`fclose(fp);`即可关闭文件指针fp所指向的文件。

二、二进制文件的读取二进制文件的读取可以通过以下步骤实现:1. 打开文件:通过`fopen`函数以二进制读取模式打开文件,返回一个文件指针。

例如,`FILE *fp = fopen("data.bin", "rb");`即可打开名为"data.bin"的二进制文件。

2. 读取数据:通过`fread`函数从文件中读取数据。

该函数的参数包括待存储数据的地址、每个数据项的大小和待读取数据的数量。

例如,`int data[5]; fread(data, sizeof(int), 5, fp);`即可将文件中的数据读入整型数组data中。

3. 关闭文件:通过`fclose`函数关闭已打开的文件。

例如,`fclose(fp);`即可关闭文件指针fp所指向的文件。

c语言中文件的存取方式

c语言中文件的存取方式

c语言中文件的存取方式
在C语言中,可以使用文件存取函数来读写文件。

文件的存取方
式主要有以下两种:
1. 文本文件存取:文本文件是以字符为单位存储的文件,可以
使用标准输入输出函数来读写文本文件,比如fread、fwrite、fscanf、fprintf等函数。

2. 二进制文件存取:二进制文件是以字节为单位存储的文件,
可以使用二进制输入输出函数来读写二进制文件,比如fread、fwrite 等函数。

文件存储的步骤大致如下:
1. 打开文件:使用文件指针指向要打开的文件,可以使用fopen 函数来打开文件。

2. 读写文件:使用适当的函数来读写文件,读写文件的方式取
决于文件的类型。

3. 关闭文件:当读写操作完成后,需要使用fclose函数关闭文件。

在C语言中,文件通常分为文本文件和二进制文件两种类型。


本文件是以文本形式存储的文件,可以使用文件输入输出函数进行读
写操作,这些函数以字符为单位进行操作。

二进制文件是以二进制格
式存储的文件,可以使用二进制输入输出函数读写操作,这些函数以
字节为单位进行操作。

fopen 二进制读取

fopen 二进制读取

fopen 二进制读取在计算机编程中,文件的读取和写入是非常常见的操作。

而在读取文件时,我们可以选择以二进制方式进行读取,这就是fopen二进制读取的用法。

我们需要了解一下什么是二进制。

在计算机中,所有的数据都是以二进制的形式存储和处理的。

二进制由0和1两个数字组成,可以表示各种各样的数据,如整数、浮点数、字符等。

在文件中,数据也是以二进制的形式存储的。

接下来,我们来看一下fopen二进制读取的具体用法。

在C语言中,我们可以使用fopen函数来打开一个文件,并指定打开方式为二进制读取。

具体的代码如下所示:```cFILE *file = fopen("filename", "rb");```上面的代码中,"filename"表示要打开的文件的路径和名称。

"rb"表示以二进制方式进行读取。

其中,"r"表示只读,"b"表示二进制。

通过这样的方式打开文件后,我们就可以读取文件中的二进制数据了。

接下来,我们可以使用fread函数来读取文件中的二进制数据。

具体的代码如下所示:```cunsigned char buffer[1024];size_t bytesRead = fread(buffer, sizeof(unsigned char), sizeof(buffer), file);```上面的代码中,我们定义了一个缓冲区buffer,用来存储从文件中读取的数据。

通过调用fread函数,我们可以将文件中的二进制数据读取到缓冲区中。

其中,第一个参数是缓冲区的地址,第二个参数是每个元素的大小,第三个参数是要读取的元素数量,第四个参数是文件指针。

在读取文件时,我们可以根据需要选择读取的数据量。

上面的代码中,我们每次读取1024个字节的数据。

读取完成后,fread函数会返回实际读取到的元素数量,我们可以根据这个值来判断是否已经读取到文件末尾。

C语言实现二进制文件读写

C语言实现二进制文件读写

C语言实现二进制文件读写(转载)文件的读写是挺基础,为了备忘也为了之后查资料方便,从网上找了这个例子,觉得写的很好,就转载过来了。

先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。

二进制读写的顺序是用fopen 以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。

下面我们看看一个拷贝程序的源码:Copy.c:#include <stdio.h>#include <stdlib.h>#define MAXLEN 1024int main(intargc, char *argv[]){if(argc< 3 ){printf("usage: %s %s\n", argv[0], "infileoutfile");exit(1);}FILE * outfile, *infile;outfile = fopen(argv[2], "wb" );infile = fopen(argv[1], "rb");unsigned char buf[MAXLEN];if(outfile == NULL || infile == NULL ){printf("%s, %s",argv[1],"not exit\n");exit(1);}intrc;while( (rc = fread(buf,sizeof(unsigned char), MAXLEN,infile)) != 0 ) {fwrite(buf, sizeof( unsigned char ), rc, outfile );}fclose(infile);fclose(outfile);system("PAUSE");return 0;}现在来讲讲这个程序,这个程序的作用就是将文件1的内容直接拷贝到文件2中,注意fread 的返回值,这个值需要在fwrite的时候将会用到。

c语言的各种读写模式

c语言的各种读写模式

c语言的各种读写模式C语言的各种读写模式一、以只读模式打开文件在C语言中,可以通过以只读模式打开文件来读取文件的内容。

只读模式不允许对文件进行写操作,可以保证文件的内容不会被意外修改。

使用只读模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "r");if (file == NULL) {printf("无法打开文件\n");return 1;}// 读取文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以只读模式打开名为`file.txt`的文件。

如果文件打开失败,即文件不存在或无法访问,则会输出错误信息并返回。

如果文件成功打开,则可以在之后的代码中读取文件的内容。

二、以写入模式打开文件与只读模式相反,以写入模式打开文件允许对文件进行写操作。

使用写入模式打开文件时,如果文件不存在,则会创建一个新的文件;如果文件已存在,则会清空文件内容。

使用写入模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "w");if (file == NULL) {printf("无法打开文件\n");return 1;}// 写入文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以写入模式打开名为`file.txt`的文件。

如果文件打开失败,则会输出错误信息并返回。

如果文件成功打开,则可以在之后的代码中写入文件的内容。

三、以追加模式打开文件追加模式是一种特殊的写入模式,它不会清空文件内容,而是在文件末尾继续写入新的内容。

使用追加模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "a");if (file == NULL) {printf("无法打开文件\n");return 1;}// 写入文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以追加模式打开名为`file.txt`的文件。

c语言fopen打开二进制文件并运算示例

c语言fopen打开二进制文件并运算示例

c语言fopen打开二进制文件并运算示例以C语言fopen打开二进制文件并运算示例在C语言中,我们可以使用fopen函数来打开文件。

而对于二进制文件的处理,我们可以通过指定打开模式为"rb"来实现。

本文将以一个示例来演示如何使用fopen打开二进制文件,并进行简单的运算。

让我们创建一个名为"numbers.bin"的二进制文件,并将一些整数写入该文件中。

我们可以使用以下代码来实现:```c#include <stdio.h>int main() {// 创建一个二进制文件FILE *file = fopen("numbers.bin", "wb");if (file == NULL) {printf("无法创建文件!\n");return 1;}// 写入整数到文件int numbers[] = {10, 20, 30, 40, 50};fwrite(numbers, sizeof(int), sizeof(numbers) / sizeof(int), file);// 关闭文件fclose(file);return 0;}```在上述代码中,我们首先使用fopen函数以二进制写入模式("wb")打开一个名为"numbers.bin"的文件。

然后,我们使用fwrite函数将整数数组"numbers"写入文件中。

最后,我们使用fclose函数关闭文件。

接下来,我们将使用fopen以二进制读取模式("rb")打开该文件,并进行一些简单的运算。

我们可以使用以下代码来实现:```c#include <stdio.h>int main() {// 打开二进制文件FILE *file = fopen("numbers.bin", "rb");if (file == NULL) {printf("无法打开文件!\n");return 1;}// 读取整数数组int numbers[5];fread(numbers, sizeof(int), sizeof(numbers) / sizeof(int), file);// 进行运算int sum = 0;for (int i = 0; i < sizeof(numbers) / sizeof(int); i++) {sum += numbers[i];}printf("数组中的整数之和为:%d\n", sum);// 关闭文件fclose(file);return 0;}```在上述代码中,我们首先使用fopen函数以二进制读取模式("rb")打开"numbers.bin"文件。

Matlab中如何实现二进制文件的读写

Matlab中如何实现二进制文件的读写

Matlab中如何实现二进制文件的读写1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。

fopen函数的调用格式为:fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。

文件名用字符串形式,表示待打开的数据文件。

常见的打开方式如下:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。

‘r+’:读写方式打开文件,打开后先读后写。

该文件必须已存在。

‘w’:打开后写入数据。

该文件已存在则更新;不存在则创建。

‘w+’:读写方式打开文件。

先读后写。

该文件已存在则更新;不存在则创建。

‘a’:在打开的文件末端添加数据。

文件不存在则创建。

‘a+’:打开文件后,先读入数据再添加数据。

文件不存在则创建。

另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。

关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。

sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。

如果要关闭所有已打开的文件用fclose(‘all’)。

2、二进制文件的读写操作1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。

其调用格式为:COUNT=fwrite(fid,A,'precision')说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。

缺省数据精度为uchar,即无符号字符格式。

fwrite&fread用法举例

fwrite&fread用法举例

fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。

#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);返回值:读或写的记录数,成功时返回的记录数等于nmemb,出错或读到文件末尾时返回的记录数小于nmemb,也可能返回0。

fread和fwrite用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构体或者一个定长数组。

参数size指出一条记录的长度,而nmemb指出要读或写多少条记录,这些记录在ptr 所指的内存空间中连续存放,共占size * nmemb个字节,fread从文件stream中读出size * nmemb 个字节保存到ptr中,而fwrite把ptr中的size * nmemb个字节写到文件stream中。

nmemb是请求读或写的记录数,fread和fwrite返回的记录数有可能小于nmemb指定的记录数。

例如当前读写位置距文件末尾只有一条记录的长度,调用fread时指定nmemb为2,则返回值为1。

如果当前读写位置已经在文件末尾了,或者读文件时出错了,则fread返回0。

如果写文件时出错了,则fwrite 的返回值小于nmemb指定的值。

下面的例子由两个程序组成,一个程序把结构体保存到文件中,另一个程序和从文件中读出结构体fread和fwrite的例子程序如下:/* -------------------writerec.c--------------- */#include <stdio.h>#include <stdlib.h>struct record {char name[10];int age;};int main(void){struct record array[2] = {{"Ken", 24}, {"Knuth", 28}}; FILE *fp = fopen("recfile", "w");if (fp == NULL) {perror("Open file recfile");exit(1);}fwrite(array, sizeof(struct record), 2, fp);fclose(fp);return 0;}/* -------------------readrec.c----------------- */#include <stdio.h>#include <stdlib.h>struct record {char name[10];int age;};int main(void){struct record array[2];FILE *fp = fopen("recfile", "r");if (fp == NULL) {perror("Open file recfile");exit(1);}fread(array, sizeof(struct record), 2, fp);printf("Name1: %s\tAge1: %d\n", array[0].name,array[0].age);printf("Name2: %s\tAge2: %d\n", array[1].name,array[1].age);fclose(fp);return 0;}$ gcc writerec.c -o writerec$ gcc readrec.c -o readrec发现生成的文件recfile不能直接打开。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档