当前位置:首页 » 编程语言 » c语言二进制读写文件

c语言二进制读写文件

发布时间: 2022-06-14 09:52:36

❶ 关于c语言二进制文件的读写问题

voidload()
{
FILE*fp;

fp=fopen("number","rb");//<--------------------

fread(&a,sizeof(int),1,fp);

fclose(fp);
}

❷ C语言二进制文件读写是什么意思能举个例子吗

例如 int a=24
FILE *fp
fp=fopen("txt","wb");
fwrite(&a,sizeof(int),1,fp)
这样就把它用二进制 写进了文件里面
因为 你用的是二进制写,所以 把你要的写的东西都换成了二进制
然后存放在文件里面的 你用记事本打开那个文件 看到的东西是乱的 很正常 不用在意
到时候你用 rb
fread 打开 弄出来 就是24 了
PS: 我喜欢用fwrite 和 fread 因为基本什么类型的数据都以用 你也可以用其他函数 就看自己的习惯啦

❸ C语言文本方式和二进制方式读写操作的区别

首先要明白一点:任何数据在内存中或者硬盘上的存储都是1、0组成的序列,从硬盘、内存这个角度看根本不存在什么二进制和文本模式之分
区别
稍对C语言操作文件有了解都知道2点:1、首先应该fopen打开文件2、有两类文件操作函数,对应着二进制模式和文本模式。
两个模式的区别在两个地方,这两个地方的区别正好体现在刚才说的2点上。
1、
打开文件时选择模式
使用fopen函数时,要给予第二个参数一个值,告诉fopen使用什么模式打开文件。这里的参数决定的就是第一个区别:对于字符串中的\n如何处理?
教材中说,文本模式中,在存储\n时要转化为\r\n,读取文件时进行逆转换。二进制模式时,则不进行转换。这是在操作系统是Windows的条件下。
首先我们要知道回车和换行是不相同的,Windows中文字另起一行内存表示为<回车><换行>对应\r\n,而Linux、Unix中则是单单一个<换行>对应\n。Mac中则是一个<回车>对应\r
C语言起源于Unix的产生,对于文件中的另起一行,Unix采用单个\n表示。所以我们通常在输出一个短话想换行时加一个\n就可以了,Windows也是如此。到了数据从内存到硬盘上进行存储时,对于unix来说,\n照样是\n。而Windows为了防止读取时混乱必须转换为\r\n。Mac呢,就是\r。
这就是第一区别,这个区别是体现在fopen第二个参数,跟你使用文本模式的函数还是二进制模式的函数根本不相关!你可以做一个实验,使用二进制模式的函对于同样的字符串:”Hello\n”,当fopen使用w参数写入文件,无论是fwrite还是fprintf都会对\n会进行转换,而使用wb参数则都不进行转换。
2、
两种不同模式的函数
打开文件后,要进行数据写入。
教材中说,使用文本模式打开文件,就要用fprintf写入数据,使用二进制模式打开文件,就要用fwrite写入数据。
其实你用文本模式打开文件,一个字符串,fprintf、fwrite都能写入文件,写入还都是一样的数据。使用两类函数的区别其实在于数字的处理上。
对于一个数字5,你用fprintf写入,将把数字5转换为字符5,将其对应的ASCII编码存入存储器,占用1个字节。但实际上数字5就是数字5,对应2进制101,整形占用4个字节。fwrite则将这个数字在内存中占用的4个字节全部原样写入到硬盘中,占4个字节。
而同样对于一段字符串”Hello”,使用ASCII编码对于fprintf和fwrite都能原样写到硬盘中。
同样对于这个区别,你仍然能做个实验,对于一个int型数字5,你如何用fprintf和fwrite写入到硬盘中,他们对应的十六进制码是多少?对于一段字符串你再用两个函数分别写到硬盘中,你看看对应的十六进制码是什么。这个实验跟你用fopen如何指定第二个参数无关。

❹ c语言读取二进制数据文件

1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。

2、fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

3、例程:

#include <stdlib.h>
#include <stdio.h>
int main ()
{
FILE * fpPhoto, * fpText, * fpTarget ;
int iRead ;
char szBuf[100] ;

printf ("请输入第一个文件名(jpg):\n") ;
gets (szBuf) ;
fpPhoto = fopen (szBuf, "rb") ;
printf ("请输入第二个文件名(txt):\n") ;
gets (szBuf) ;
fpText = fopen (szBuf, "rb") ;
printf ("请输入目的文件名(jpg):\n") ;
gets (szBuf) ;
fpTarget = fopen (szBuf, "wb") ;

if (!fpPhoto || !fpText || !fpTarget)
{
printf ("打开文件失败!\n") ;
system("pause") ;
return -1 ;
}

while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0)
fwrite (szBuf, 1, iRead, fpTarget) ;
while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0)
fwrite (szBuf, 1, iRead, fpTarget) ;

fclose (fpPhoto) ;
fclose (fpText) ;
fclose (fpTarget) ;
return 0 ;
}

❺ C语言怎么编写一个程序读取任何二进制文件,并将文件内所有字节按相反排序存入另一文件中

如果文件不大的话,可以定义一个数组,一次性将文件内容都读出来,然后从后向前写到新文件中,如果文件很大的话,就将文件指针定位到文件结尾的前一个字节处,循环读一个字节写入另一个文件,并将原文件指针往回移2个字节,直到将所有字节反向读取完成并写入。
#include <stdio.h>

main()
{
char c;

FILE *rfp, *wfp;

rfp = fopen("a.bin", "rb"); // 文件名自己指定
if(rfp == NULL) {
printf("文件不存在\n");

return -2;

}

wfp = fopen("b.bin", "wb");

if(wfp == NULL) {
printf("无法创建文件\n");

return -2;

}

fseek(rfp, -1, SEEK_END);

do {

fread(&c, sizeof(char), 1, rfp);
fwrite(&c, sizeof(char), 1, wfp);
} while(fseek(rfp, -2, SEEK_CUR) == 0);

fclose(rfp);

fclose(wfp);

}

❻ c语言怎么二进制文件操作

主要就是二进制文件的读写、结构体的定义和使用。
fopen函数 以 "ab+" 方式打开文件,用fwrite函数写入内容; "b" 方式打开文件,读取内容;

❼ C语言采用文本方式和二进制方式打开文件的区别分析

fprintf
fscanf函数是对文件ASCII码读写(文件)
fread
fwrite函数是对文件二进制读写
文本读写将文件中的ASCII码转换成二进制在保存在内存变量中
二进制读写直接将内存中的数据原封不动、不加转换地复制到磁盘文件上,读入也是直接讲磁盘中的内容读入到内存,效率比文本快多了

❽ c语言 二进制文件读和写

二进制读写应该在打开文件时加“b”
if((fp=fopen(fpname,"w+b"))==NULL)
if((fp=fopen(fpname,"r+b"))==NULL)

❾ c语言怎么用二进制方式读取文件

C语言中二进制文件的读取要用fread和fwrite来实现。 fwrite()与fprintf()是不同的。 fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。

热点内容
怎样删除小视频文件夹 发布:2024-05-19 05:49:29 浏览:588
开启php短标签 发布:2024-05-19 05:44:12 浏览:473
android各国语言 发布:2024-05-19 05:42:54 浏览:246
微信什么资料都没怎么找回密码 发布:2024-05-19 05:35:34 浏览:906
填志愿密码是什么 发布:2024-05-19 05:30:23 浏览:317
城堡争霸自动掠夺脚本 发布:2024-05-19 05:22:06 浏览:203
asp编程工具 发布:2024-05-19 05:20:36 浏览:142
insertpython 发布:2024-05-19 05:12:26 浏览:244
androidant编译 发布:2024-05-19 05:04:11 浏览:987
按键脚本优化 发布:2024-05-19 04:59:57 浏览:751