【问题标题】:Parse data from buffer of a bin file c从 bin 文件 c 的缓冲区解析数据
【发布时间】:2013-05-15 15:54:59
【问题描述】:

我有一个包含一些数据的 bin 文件,我应该读取该数据并将其存储在变量中。问题是我不知道如何解析缓冲区中的数据。

FILE *file;
char *buffer;

//Abre o ficheiro
file = fopen("retail.bin", "rb");
if (!file)
{
    printf("Erro ao abrir %s\n", "retail.bin");
    return;
}

//Lê o conteúdo do ficheiro
while(fread(&buffer, sizeof(int), 1, file) == 1){
    printf("%d", buffer);
}

fclose(file);

输出:53324477812552451219223312232012122211305213462334644247717440148531711811913243 34437515052573583

我想要的是能够分别访问每个号码。我试过了:printf("%s", buffer[0]);

但程序停止工作。

【问题讨论】:

  • 您需要知道数据是如何写入缓冲区的。否则没有办法知道如何读取这些数据。
  • OT:从 OP 的来源来看,该程序在读取数据之前未将内存分配给 buffer 指向的内容,因此会遇到未定义的行为。
  • char *buffer; ----> int buffer
  • printf("%d\n", buffer);

标签: c file parsing binaryfiles


【解决方案1】:

你有几个问题。首先是传递一个指向fread 的指针。另一种是您将整数读入char 缓冲区,即字符串。第三个是buffer没有分配,指向内存中的一个随机位置。第四个是您将“字符串”打印为整数。

如果要读取整数,则将其读取为整数:

int value;
fread(&value, sizeof(value), 1, file);
printf("%d", value);

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2018-11-21
    • 2021-11-16
    相关资源
    最近更新 更多