首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件读取错误

文件读取错误
EN

Stack Overflow用户
提问于 2012-03-08 08:21:18
回答 1查看 829关注 0票数 0

我正在从txt文件中读取字节流。例如: 01000101 =4个字节。

代码语言:javascript
复制
FILE *file;
 char buffer_msg[100] = { '0' };
 char line[100] = { '0' };

file = fopen("name.txt",'r');

if(file!=NULL)
      {
        while(fgets(line, sizeof(line), file)!=NULL)
           {
                     strcpy( buffer_msg, line);
           }
       }

然后我将这个buffer_msg传递给一个函数。现在,当我在eclipse中调试,并检查buffer_msg的内存时,它将4字节的数据读取为3031 3030 3031 3031。我的猜测是它正在以这种格式读取我的数据0001 0000 0001 0001。有人能说出发生了什么事吗?我猜文本文件以\r\n结尾。我读错文件了吗?

EN

回答 1

Stack Overflow用户

发布于 2012-03-08 09:24:06

您需要的不是strcpy,而是如下所示:

代码语言:javascript
复制
void parse(char *buffer, char *line) {
  while (*line) {
     *buffer++ = (hex2char(line[0]) << 4) + hex2char(line[1]);
     line += 2;
  }
}

这将从line中提取两个字节,将十六进制数字转换为整数,并将其存储到buffer的一个字节中。

这将适用于hex2char:

代码语言:javascript
复制
char hex2char(char digit) {
  if (digit >= '0' && digit <= '9') {
    return digit - '0';
  } else if (digit >= 'A' && digit <= 'F') {
    return digit - 'A' + 10;
  } else if (digit >= 'a' && digit <= 'f') {
    return digit - 'a' + 10;
  }

  return -1;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9611217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档