Ⅰ 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语言读取二进制数据文件
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语言二进制文件读写是什么意思能举个例子吗
然后打开显示的是一个向上箭头。二进制文件不是随便给你用什么文本编辑器就能打开的。回听名字就知道答,它是【二进制】文件不是【文本】文件,自然不是给你用【文本】编辑器打开。所以记事本开起来看到奇怪的东西也是正常的。看二进制文件的内容你需要专门的二进制编辑器(其实应该叫十六进制编辑器),比如xvi32,比如frhed
Ⅳ 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语言怎么二进制文件操作
主要就是二进制文件的读写、结构体的定义和使用。fopen函数 以 "ab+" 方式打开文件,用fwrite函数写入内容; "b" 方式打开文件,读取内容;
Ⅵ c语言怎么用二进制方式读取文件
C语言中二进制文件的读取要用fread和fwrite来实现。 fwrite()与fprintf()是不同的。 fwrite将写入的内数据作为文件的磁盘内容保存容。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。
Ⅶ c语言编程作业 急求 (读取2进制文件 输出16进制)万分感谢
#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(intargc,char*argv[]){charaa[]="000100100011010001010110011110001001101010111100110111101111";charbb[20];charcTmp[5];inttmp=0;char*p=NULL;memset(bb,0x00,sizeof(bb));memset(cTmp,0x00,sizeof(cTmp));p=aa;sscanf(p,"%[0,1]",cTmp);while(NULL!=(p=strstr(p,cTmp))){sprintf(bb,"%s%X",bb,strtoul(cTmp,0,2));p=p+strlen(cTmp)+1;sscanf(p,"%[0,1]",cTmp);}printf("%s",bb);}大概就是这么一个思路,主要用到的就是strtoul函数。你改成fscanf估计就好使。
Ⅷ C语言 结构体指针字符 二进制文件写入和读取
打开方式用二进制方式打开,如FILE*fp=fopen("a.zip","rb+");然后读用fread去读。1、对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。2、C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。fopen的函数原型:FILE*fopen(constchar*path,constchar*mode);fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:r以只读方式打开文件,该文件必须存在。r+以可读写方式打开文件,该文件必须存在。rb+读写打开一个二进制文件,允许读数据。rw+读写打开一个文本文件,允许读和写。w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)wb只写打开或新建一个二进制文件;只允许写数据。wb+读写打开或建立一个二进制文件,允许读和写。wt+读写打开或着建立一个文本文件;允许读写。at+读写打开一个文本文件,允许读或在文本末追加数据。ab+读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
Ⅸ c语言用什么函数读取2进制文件内容
你怎么输出来的?二进制如果以文本输出自,自然会有很多乱码。你可以用"%x"格式输出看看chara;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语言读取二进制文件|c语言读取二进制数据文件