当前位置:首页 » 编程语言 » c语言二进制写入文本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言二进制写入文本

发布时间: 2022-08-12 14:02:49

c语言实现以二进制位的方式写文本文件。运行8次,每次输入一个二进制位,最后打开检查文件。

本程序只实现了功能,应再加一些错误检查才好,鉴于实现复杂,影响主题,就不写了
#include<stdio.h>

intwrite_file(char*file,intbit)
{
FILE*fp=fopen(file,"r+b");//以读写方式打开二进制文件
charch=0;
if(fp==NULL)
fp=fopen(file,"w");//第一次没有文件时会找不到文件
else
{
fread(&ch,1,1,fp);
ch<<=1;
if(bit)
ch|=0x01;
fseek(fp,0,SEEK_SET);
}
if(fwrite(&ch,1,1,fp)!=1)//将ch写入文件,以二进制写方式
{
return-1;
}
fclose(fp);
return0;
}

intmain()
{
charfilename[128]={"D:\abc.txt"};//为了方便就不输入文件名了
/*放开这里可以输入文件名
printf("inputfilename:");
scanf("%s",filename);
*/
intbit;
printf("inputanum:");
while(scanf("%d",&bit)!=1||(bit!=0&&bit!=1))
{
fflush(stdin);
printf("inputerror,re-input ");
}
if(write_file(filename,bit))
{
printf("writefileerror,clearfileandre-do ");
return-1;
}

return0;
}

Ⅱ C语言如何写入文本文件

1、首先输入下方的代码

#include <stdio.h>

int main()

{

//下面是写数据,将数字0~9写入到data.txt文件中

FILE *fpWrite=fopen("data.txt","w");

if(fpWrite==NULL)

{

return 0;

}

for(int i=0;i<10;i++)

fprintf(fpWrite,"%d ",i);

fclose(fpWrite);

//下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上

int a[10]={0};

FILE *fpRead=fopen("data.txt","r");

if(fpRead==NULL)

{

return 0;

}

for(int i=0;i<10;i++)

{

fscanf(fpRead,"%d ",&a[i]);

printf("%d ",a[i]);

}

getchar();//等待

return 1;

}

Ⅲ 怎么在C语言里面输入二进制数字

c语言不能直接表示二进制,没有数字前缀表示。
例子如下:
假设有一个
int
类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000
00000000
00000000
00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
(3)c语言二进制写入文本扩展阅读
进制是一种计数的方式,常用的有二进制、八进制、十进制、十六进制。任何数据在计算机内存中都是以二进制的形式存放的。
我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数;八进制数是以8为计算单元,满8进1位的数。
对于任何一个数字,我们都可以用不同的进制来表示,比如,十进制数12,用二进制表示为1100,用八进制表示为14,用十六进制表示为0xc。

Ⅳ C语言中,以二进制模式打开的文件不能写入文本吗

展开全部
可以的,直接用fwrite向里面写数组就可以把文本写进去了。
别用fprintf了

Ⅳ 请c语言高手给写一个函数,实现以二进制位的方式写文本文件。

你的意思是输入的8个以01组成的数组,将其写入到文件中,而存储时,将这个数组转换成对应的字符记入文件中吧。
但这样不是写
二进制文件
啊!

Ⅵ C语言读写二进制文本文件(.txt),如果可行,加200分,先谢过

假定你用MS VC++ 6.0 编译器,不是TC.
假定 第1、2、3、4字节表示分数, 是 int 型
文件名 abc.txt
如果还没有2进制文件,则可以自己建1个,假定数据为:
// int mark[1000]={60,70,80,95,30};
// char m[1000][25]={"zhang","wang","Li","Zhao","Fang"};
打开写入:
// fin=fopen(namein,"wb+");
// for (i=0;i<n;i++) { fwrite(&mark[i],4,1,fin);fwrite(m[i],25,1,fin);}
// fclose(fin);
再运行。
下面没有使用“结构”,分数存 mark[], 人名存 m[][25].

#include <stdio.h>
int main() {
FILE *fin;
char namein[80]="abc.txt";
int mark[1000],t;
char m[1000][25],ts[25];
int i,j,n=0;
fin=fopen(namein,"rb+");
if (!fin){
printf("open %s error\n",namein);
}

while(1){
fread(&mark[n],4,1,fin);
if (feof(fin)) break;
fread(&m[n],25,1,fin);
if (feof(fin)) break;
n++;
}
printf("I read %d data\n",n);
for (i=0;i<n;i++) printf("%d %s\n",mark[i],m[i]);

for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++){
if (mark[j]>mark[i]){
t = mark[i];mark[i]=mark[j];mark[j]=t;
strcpy(ts,m[i]); strcpy(m[i],m[j]);strcpy(m[j],ts);
}
}

rewind(fin);
for (i=0;i<n;i++)
{ fwrite(&mark[i],4,1,fin);fwrite(m[i],25,1,fin);}
fclose(fin);

return 0;
}

Ⅶ 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>
intmain()
{
FILE*fpPhoto,*fpText,*fpTarget;
intiRead;
charszBuf[100];

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

if(!fpPhoto||!fpText||!fpTarget)
{
printf("打开文件失败! ");
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);
return0;
}