高分悬赏:C语言二进制文件读写问题。必有重谢!!!!
问题如下:需要用C语言编程,现要将我的XX.bin文件读取出来,在C语言中以每两个字节的方式读取bin文件中得数据,每读取一次将其以ASCII码的方式写入到一个txt文本...
问题如下:需要用C语言编程,现要将我的XX.bin文件读取出来,在C语言中以每两个字节的方式读取bin文件中得数据,每读取一次将其以ASCII码的方式写入到一个txt文本文件中并换行,然后再往后读取下两个字节并接着写入到之前的txt文件后面,依次循环知道该bin文件读取完毕。
求高手帮忙设计下这个程序,必有重谢。 展开
求高手帮忙设计下这个程序,必有重谢。 展开
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
char *srcfile = "src.bin";
char *objfile = "obj.txt";
typedef char byte;
int main()
{
FILE *src = fopen(srcfile,"r");
if(src == NULL)
{
printf("Can't open the src file!\n");
exit(1);
}
system("rm obj.txt");
FILE *obj = fopen(objfile,"w");
if(obj == NULL)
{
printf("Can't create the obj file!\n");
exit(1);
}
byte b;
while(!feof(src))
{
fscanf(src,"%c",&b);
fprintf(obj,"%c",b);
if(feof(src))
break;
fscanf(src,"%c",&b);
fprintf(obj,"%c\n",b);
}
return 0;
}
#include<stdlib.h>
char *srcfile = "src.bin";
char *objfile = "obj.txt";
typedef char byte;
int main()
{
FILE *src = fopen(srcfile,"r");
if(src == NULL)
{
printf("Can't open the src file!\n");
exit(1);
}
system("rm obj.txt");
FILE *obj = fopen(objfile,"w");
if(obj == NULL)
{
printf("Can't create the obj file!\n");
exit(1);
}
byte b;
while(!feof(src))
{
fscanf(src,"%c",&b);
fprintf(obj,"%c",b);
if(feof(src))
break;
fscanf(src,"%c",&b);
fprintf(obj,"%c\n",b);
}
return 0;
}
更多追问追答
追问
能稍微解释一下这个程序吗。。。还有打开bin文件的时候是用'r'吗,不是'rb'才能打开二进制文件吗
追答
"rb"不是说打开二进制文件,而是说以二进制的方式来打开文件,任何文件都可以用二进制的方式打开,所以我觉得这里没有问题。然后你的问题中说每次读取两个字节,但是每个ASCII码的值只是用一个字节来表示的,所以我一个字节一个字节地读取,一次循环中读取两次,但是文件的长度是未知的,可能读取完一个字节之后就到文件末尾了,再读的话就报错
#include
#include
char *srcfile = "src.bin"; //你的源文件名
char *objfile = "obj.txt"; //你要写入的文件的文件名
typedef char byte;
int main()
{
FILE *src = fopen(srcfile,"r");
if(src == NULL)
{
printf("Can't open the src file!\n");
exit(1);
}
system("rm obj.txt"); //这句代码是我想可能你调试程序的时候会生成一个obj.txt,再运行的时候需要把它删除掉
FILE *obj = fopen(objfile,"w");
if(obj == NULL)
{
printf("Can't create the obj file!\n");
exit(1);
}
byte b;
while(!feof(src)) //这个循环就是读取文件了
{
fscanf(src,"%c",&b); //读取一个字节
fprintf(obj,"%c",b); //写入一个字节
if(feof(src)) //如果到文件末尾了就结束
break;
fscanf(src,"%c",&b); //读取第二个字节
fprintf(obj,"%c\n",b); //写入第二个字节并换行
}
fclose(src);
fclose(obf); //这个操作也是必要的,我的失误,抱歉
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询