c - 从文件读取到 C 中的 int 缓冲区

标签 c

我有一个包含数千行的 txt 文件。每行的长度不同。 txt文件主要包含以字节为单位的十六进制数据。例如:

01 01 04 03 = 4 个字节。

第二行可能包含 8 个字节,第三行可能包含 40 个字节,依此类推。有成千上万条这样的线。

现在我想将这些字节读入 int 缓冲区。我正在读入 char 缓冲区,它在内存中保存为 0001 0001 0004 0003,这是我不想要的,它被认为是 8 个字节。在内存中,它保存为 3031 3031 3034 3030 (ASCII),因为它是字符缓冲区。我正在将其转换为 0001 0001 0004 0003。

下面是我的代码

FILE *file;

char buffer[100] = { '\0' };
char line[100] = { '0' }; 

if(file!=NULL)
      {
        while(fgets(line, sizeof(line), file)!=NULL)
        {

          for(i = 0; (line[i] != '\r') ; i++)
          {
              buffer[i] = line[i];
          }
        }
       }

我想逐行读取而不是一次读取整个文件。在内存中,我只想看到 01 01 04 03。我想使用 int buffer 会有所帮助。一旦将文件读入缓冲区行,它就会存储为 char。有什么建议吗?

最佳答案

我会读一行,然后使用 strtol 转换输入中的各个数字。 strtol 为您提供指向转换失败字符的指针,您可以将其用作查找/转换下一个数字的起点。

关于c - 从文件读取到 C 中的 int 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690082/

相关文章:

c - 简单的 printf 案例

c - 如何打印无符号整数的最大值?

c - 如果要保存的 key 是 HKEY_LOCAL_MACHINE,为什么 RegSaveKey() 会失败并显示错误代码 5(访问被拒绝)?

c - 从 C 程序执行 Perl 脚本

c - 为什么输出-1.#IND00 会出现浮点错误?

c - top(事件监视器)如何在写入堆时更新内存使用情况? (C)

c - 段错误但找不到错误

c - 十六进制数比较?

c - 分配函数指针时出现 "Type lvalue required as left operand of assignment"错误(不是 == 问题!)

c - C中的指针问题