在c语言中如何打开二进制文件

#include <stdio.h>
void main()
{
FILE *p;
p=fopen("file1.txt","wb");
fputs("china",p);
}
我这里不是用"wb“(二级制)写入的吗?
怎么我打开file1.txt文件还是显示出"china“啊?
请大家告诉我应该怎么修改啊?

文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制)打开这个文件,用什么函数读写这个文件(读写函数),怎么判断读到这个文件结尾。


具体的说:

C规定了标准输入输出函数库,用fopen()函数打开文件。fopen()函数的调用方式一般为:

FILE *fp;  // 定义一个文件类型的指针变量fp
fp=fopen(文件名,使用文件方式);


使用文件方式见下表:

"r"(只读)        为输入打开一个文本文件    

"w"(只写)      为输出打开一个文本文件    

"a"(追加)       为追加打开一个文本文件    

"rb"(只读)      为输入打开一个二进制文件    

"wb"(只写)     为输出打开一个二进制文件    

"ab"(追加)      为追加打开一个二进制文件    

"r+"(读写)      为读/写打开一个文本文件    

"w+"(读写)     为读/写创建一个文本文件    

"a+"(读写)      为读/写打开一个文本文件    

"rb+"(读写)     为读/写打开一个二进制文件    

"wb+"(读写)   为读/写创建一个二进制文件    

"ab+"(读写)    为读/写打开一个二进制文件    

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-04
不知lz希望得到什么

二进制的意思是按照数据的原有二进制值写入

与文本模式的差别是不处理行尾

“china” 的 ASCII 就是这样子,还能是什么追问

那能不能得到一大堆数字啊?

追答

如果只是显示的话,用 WinHex 或 UltraEdit 之类的 HEX 模式

如果是要文本模式显示数字,那只有自己进行转换了,转换成数字后写入

本回答被提问者采纳
第2个回答  2011-02-26
char只有一字节,二进制形式就是ASCII码。你用int就会看出不一样了
第3个回答  2011-02-26
二进制文件,你写入ASCII 字符串,打开来看 仍然是可识别的字符串。
如果你用别的编码,例如 unicode,
你用 notepad 打开,仍然可以识别。因为 notepad 认识 unicode。
下面是写unicode 文件:
#include <stdio.h>
void main()
{
FILE *p;
char str[]="China";
int i,x;
p=fopen("file2.txt","wb");
x = 0xfeff;
fwrite(&x,2,1,p);
for (i=0;i<strlen(str);i++){
x = (str[i] - 0x20) | 0xff00;
fwrite(&x,2,1,p);
};
fclose(p);
}
-------
你可以自己编密码,例如:
x = (str[i] - 0x30) | 0xff00; 就不 认识了。
第4个回答  2011-02-26
你是用二进制写入没有错,但你是用二进制读吗??追问

是啊 可以做到吗?

追答

可以的,

c语言读取二进制数据文件
步骤如下:1、数据流:程序与数据间的交互是以流的形式进行。在C语言文件存取时,打开文件操作,关闭数据流。2、缓冲区:程序执行时,提供的额外内存以暂时存放数据。缓冲区作用是为了提高存取效率,内存的存取速度比磁盘快。3、文件类型:分为文本文件和二进制文件两种。补充:1、文本文件:字符编码的方...

如何用C语言编一个打开二进制文件(.exe)的程序?求完整程序。_百度知 ...
可以用system()函数,WinExec()函数,CreateProcess()函数 其中System()最简单,CreateProcess()函数最复杂,但功能多。都要包含头文件<windows.h> system("a.exe"); \/\/最简单的这样就可以了 复杂的如下 charszCommandLine[]="a.exe";STARTUPINFO si = {sizeof(si)};PROCESS_INFORMATION pi;si...

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

C语言采用文本方式和二进制方式打开文件的区别分析
为读/写打开一个二进制文件 "wb+"(读写)为读/写创建一个二进制文件 "ab+"(读写)为读/写打开一个二进制文件 同一个文件从磁盘读取文件到内存(程序数据区或者缓存区)时,两种方式下,内存中的内容一般不相同,这就是两种打开方式的实质性差别。这里要说一个背景,那就是在windows下,它会...

C语言输出二进制文件的问题
1、打开编译器,Ctrl+N新建一个文件;2、输入如下程序 include <stdio.h> include <stdlib.h> int main(){ int a;char b[100];scanf("%d",&a);itoa(a,b,2);printf("%s",b);} 3、按F9编译 4、按F5运行程序输入想要转化的数字即可,完成。

C语言二进制文件的读取问题
C语言中二进制文件的读取要用fread和fwrite来实现。fwrite()与fprintf()是不同的。fwrite将写入的数据作为文件的磁盘内容保存。fprintf将写入的数据的每个字符所对应的ASCII码作为文件的磁盘内容保存。fprintf做了一个转换的工作。当打开文件时,记事本会自动把文件的磁盘内容作为ASCII码转换成对应的字符,...

请问如何用C语言显示读取的二进制文件内容,以二进制的形式显示,最好有...
ckecker>>=1; \/\/准备打印 number 中的下一位 } putchar('\\n');} int main(void){ FILE *fp;char *filename = "in1.dat";char ch;if((fp=fopen(filename,"rb"))== NULL ){ printf("Can not open %s!\\n",filename);exit(0);} printf("原字符\\t二进制\\n");ch=fgetc(...

C语言怎么读取二进制文件中的数据放到一个300×300的二维数组里面_百度...
用 fopen 打开文件时 设 "rb" --用二进制方法打开,用于读 用 fread 读取数据,函数原型是:size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );各参数意义,请查编译器帮助文件,这里就不开课了。300×300 的数组需要的内存量较大,可动态分配,或用 全局量。...

...利用fopen函数打开文件如需打开一个二进制文件并向该文件尾追加数据...
b表示以二进制方式打开文件,是binary的缩写;w表示以写方式打开文件,如果文件不存在则会创建文件,如果文件已存在,则会清空内容,是write的缩写;r表示以读方式打开文件,如果文件不存在则打开失败,是read的缩写;a表示以追加写的方式打开文件,如果文件不存在则创建文件,如果文件已存在,则不会清空...

C语言怎么编写一个程序读取任何二进制文件,并将文件内所有字节按相反排...
如果文件不大的话,可以定义一个数组,一次性将文件内容都读出来,然后从后向前写到新文件中,如果文件很大的话,就将文件指针定位到文件结尾的前一个字节处,循环读一个字节写入另一个文件,并将原文件指针往回移2个字节,直到将所有字节反向读取完成并写入。include <stdio.h> main(){ char c;FIL...

相似回答