永发信息网

C++ 要求直接使用16进制方式打开文件 下面这个怎么改啊

答案:3  悬赏:10  手机版
解决时间 2021-01-25 08:04
#include<stdio.h>
#include<stdlib.h>
#include"stdafx.h"
void main(int argc,char *argv[])
{
FILE *fp;
char ch;
unsigned char chrl,chrh;
unsigned int count=0,checksum=0,chr=0;
unsigned long int sum=0;
if((fp=fopen("E:\\1.txt","r"))==NULL)
{
printf("\n\n File can't be opened");
exit(1);
}
printf("\n\nthe type of output:data---sum\n\n");
while(1)
{
if((ch=fgetc(fp))!=EOF)
{
count++;
if(ch!=' ')
{
if(count%12==0)
{
printf("\n");
if(ch>='0'&&ch<='9')
{
ch-='0';
}
else
{
if(ch>='a'&&ch<='f')
{
ch=ch-'a'+10;
}
else
{
if(ch>='A'&&ch<='F')
{
ch=ch-'A'+10;
}
}
}
}
最佳答案
#include<stdio.h>
#include<stdlib.h>
void main(int argc,char *argv[])
{
FILE *fp;
char ch;//不能用unsigned char,如果是汉字等 ch就可能是负数
unsigned int count=0,checksum=0,chr=0;
unsigned long int sum=0;
if((fp=fopen("E:\\1.txt","rb"))==NULL) //直接读二进制文件,否则回车等控制符会出错.你可以测试一下
{
printf("\n\n File can't be opened");
exit(1);
}
printf("\n\nthe type of output:data---sum\n\n");

while(fread(&ch,sizeof(char),1,fp)!=0)
{
count++;
printf("%2X ",(ch+256)%256);//x的大小写决定十六进制的大小写即ABCDEF
if(count>=12)
{
printf("\n");
count=0;
}
}

}
全部回答
放在main方法里面运行一下就知道了 char a[] = &quot;000a20&quot;; char b[] = &quot;000020&quot;; char* result = new char[sizeof a]; for(int x = 0;x&lt;sizeof a;x++) if(a[x] != 0) result[x] = a[x] - b[x] + 0x30; else result[x] = 0; printf(&quot;%s\n&quot;,result); system(&quot;pause&quot;);
如果是ASCII文件,内容是 0-9a-f 16 进制数。 int d; 你用 fscanf(fp,"%2x",&d); 就能读到。 如果是二进制文件,用 fread(&ch,1,1,fp); 就可读到。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【屁股英语】打屁股英语作文
天津市静海区第七幼儿园地址有知道的么?有点
通过武清人才落户口,能不能在市里买房子,会
vivox6d怎么设置归属地拦截???
( )不属于人力资本投资支出的形式。 1培训支
天津市静海区第五幼儿园地址在哪,我要去那里
甲乙三角形重叠面积相当于甲三角形面积2/7,相
新房子装修的流程是怎么样的?
我装了光纤给的是华为HG2845,现在我想将家里
非常眼镜地址在哪,我要去那里办事
桑乐太阳能18只管的内胆多少钱
乾隆湖幼儿园地址有知道的么?有点事想过去
根据《建筑工程建筑面积计算规范》(GB/T 5035
燕子实处中原文片段
静海县大丰堆镇丰普幼儿园地址有知道的么?有
推荐资讯
城东幼儿园(纯银路)地址在什么地方,想过去办
单选题甲状腺激素分泌过多会引起A.呆小症B.侏
5个6-QW-45AH电瓶串联充电需要多少大电流
CF怎么把精英杀敌图标去掉?
良鑫源酒店地址在什么地方,我要处理点事
天长地久婚庆(望埠分店)地址在什么地方,我要
厦门到三亚有多远
上茂茶叶地址在哪,我要去那里办事
什么叫做 重 原子核
在有丝分裂中期的根尖分生区细胞中具有双层膜
移动硬盘工作时不能震动还是无论何时都不能震
腹部外伤合并出血性休克,主要的处理原则是()
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?