c语言读文件二进制文件
⑴ c语言怎么用二进制方式读取文件
C语言中二进制文件的读取要用fread和fwrite来实现。 fwrite()与fprintf()是不同的。 fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。
⑵ c语言怎么二进制文件操作
主要就是二进制文件的读写、结构体的定义和使用。
fopen函数 以 "ab+" 方式打开文件,用fwrite函数写入内容; "b" 方式打开文件,读取内容;
⑶ c语言如何读写二进制
详细:http://hi..com/gibbon_ho/blog/item/9ca853e68447c42bb9382086.html
我一直觉得二进制文件读写是个很容易的事,所以一直没在意,最近在写一个http客户端,实现文件下载的时候,发现总有问题,后来才发现是忘记写文件用二进制方式,惭愧的很啊。然后,就在网上搜索了一下,发现通过C语言实现二进制文件读写的资料居然出奇的少,这让我很愤怒,因为虽然这东西很简单,但是对于初学者,往往会需要花很长的时间去弄,一旦明白,又发现花的时间很不值得,罢了,这里通过一个文件拷贝的例子来讲讲二进制文件的读写吧。先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。下面我们看看一个拷贝程序的源码:
Copy.c:#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 1024
int main(int argc, char *argv[])
{
if( argc < 3 )
{
printf("usage: %s %s\n", argv[0], "infile outfile");
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);
}
int rc;
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;
}
⑷ c语言读二进制文件
#include <stdio.h>
main( )
{
FILE *fp;
float data[6];
int i;
/*打开文件*/
fp=fopen("yibin","rb");
if(fp==null) exit(0);
/*从文件中读6个浮点到缓冲区data中*/
fread(data,sizeof(float),6);
/*显示缓冲区的内容*/
for(i=0;i<6;i++)
printf("%f\n",data[i]);
return 0;
}
⑸ C语言二进制文件的读取问题
C语言中二进制文件的读取要用fread和fwrite来实现。
fwrite()与fprintf()是不同的。
fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。
当打开文件时,记事本会自动把文件的磁盘内容作为ASCII码转换成对应的字符,然后再显示出来,即显示的是文本内容而不是磁盘内容。
例如,用fwrite向文件写入“65”时,文件的磁盘内容就是保存的65(磁盘上以二进制表示)。当用记事本打开文件时,记事本会读到65,并把65看作一个ASCII码,再把对应的字符“A”显示出来。因此屏幕上看到的文本内容是“A”。
而用fprintf向文件写入“65”时,文件的磁盘内容保存的是“6”和“5”这两个字符对应的ASCII码,分别是54和53。因此文件的磁盘内容是54和53。当用记事本打开文件时,记事本读到54,就显示出对应的“6”。再读到53,就显示出对应的“5”。
⑹ 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语言用什么函数读取2进制文件内容
你怎么输出的?
二进制如果以文本输出,自然会有很多乱码。
你可以用"%x"格式输出看看
char
a;
a=fgetc(fp1);
printf("%c",
a);/*这样肯定有乱码*/
printf("%x",
a);/*这样就是16进制*/
⑻ C语言链表读取二进制文件
关键代码应该是这样的
FILE *fp = fopen("file","rb");
char *p = node->data;
while(!feof(fp))
*p++ = fgetc(fp);
fclose(fp);
//**********************以上读*******************
FILE *fp = fopen("file","wb");
char *p = node->data;
while( p < node->data+len)
fputc(fp,*p++);
fclose(fp);
//**********************以上写*******************
⑼ c语言怎么读取二进制文件
main()
{
FILE * stream;
int i;
stream = fopen("/tmp/fwrite","r");
fread(s,sizeof(struct test),nmemb,stream);
fclose(stream);
for(i=0;i<nmemb;i++)
printf("name[%d]=%-20s:size[%d]=%d/n",i,s[i].name,i,s[i].size);
}
供参考
⑽ 在c语言中如何打开二进制文件
文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾。
具体的说:
C规定了标准输入输出函数库,用fopen()函数打开文件。fopen()函数的调用方式一般为:
FILE*fp;//定义一个文件类型的指针变量fp
fp=fopen(文件名,使用文件方式);
使用文件方式见下表:
"r"(只读) 为输入打开一个文本文件
"w"(只写) 为输出打开一个文本文件
"a"(追加) 为追加打开一个文本文件
"rb"(只读) 为输入打开一个二进制文件
"wb"(只写) 为输出打开一个二进制文件
"ab"(追加) 为追加打开一个二进制文件
"r+"(读写) 为读/写打开一个文本文件
"w+"(读写) 为读/写创建一个文本文件
"a+"(读写) 为读/写打开一个文本文件
"rb+"(读写) 为读/写打开一个二进制文件
"wb+"(读写) 为读/写创建一个二进制文件
"ab+"(读写) 为读/写打开一个二进制文件