C语言读取文本文件问题

freezhuang 2013-07-07 07:22:02
假如文本文件有下列两行,用C语言读出来并相加计算和。
044h, 023h, 04Dh, 06Fh, 06Eh, 069h, 074h, 06Fh,
05Ah, 011h, 000h, 00Ah, 030h, 040h, 050h, 090h,
h代表这个数据是16进制的。
结果显示sum =

大致知道是用fopen,fscanf,fclose这几个函数,数据后面跟的字符h应该怎么去处理呢?
...全文
147 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-07-08
  • 打赏
  • 举报
回复
上帖代码19行前面加一句fclose(f);
赵4老师 2013-07-08
  • 打赏
  • 举报
回复
#include <stdio.h>
FILE *f;
unsigned int v,sum;
int main() {
 f=fopen("in.txt","r");
 if (NULL==f) {
  printf("Can not open file in.txt!\n");
  return 1;
 }
 sum=0;
 while (1) {
  r=fscanf(f,"0%2Xh,",&v);
  if (r==EOF) break;
  if (r==0) fgetc(f);
  else {
   sum+=v;
  }
 }
 printf("sum=0%04Xh\n",sum);
 return 0;
}
水平不流 2013-07-07
  • 打赏
  • 举报
回复
一行一行读出来, 做处理, 几个if语句就可以了.
qzf362269994 2013-07-07
  • 打赏
  • 举报
回复
引用 4 楼 nyh137 的回复:
[quote=引用 2 楼 qzf362269994 的回复:] 每次读取3个字符之后,定标下好了啊,略过你的h ,用fseek()
这样不就读取成十进制了么?[/quote] 这样的文件本来就不会是以十六进制输出而形成的啊,本来就是字符型啊,需要自己转换啊
nyh137 2013-07-07
  • 打赏
  • 举报
回复
引用 2 楼 qzf362269994 的回复:
每次读取3个字符之后,定标下好了啊,略过你的h ,用fseek()
这样不就读取成十进制了么?
nyh137 2013-07-07
  • 打赏
  • 举报
回复
H是不是用这样fscanf(fp, "%x", &i)就能去掉了的?。。 如果逗号换成空格的方便了 不然这样要用fread了吧? size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ; 我也是新手不是很懂
qzf362269994 2013-07-07
  • 打赏
  • 举报
回复
每次读取3个字符之后,定标下好了啊,略过你的h ,用fseek()
Polobom 2013-07-07
  • 打赏
  • 举报
回复
提个建议:如果能把一串16进制的‘数字’,按一定规格‘加密’写入文本的话,当然也就能读出来进行运算了 怎么用我不知道,新手才开始学

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧