从bin文件的缓冲区中解析数据c

时间:2013-05-15 15:55:00

标签: c file parsing binaryfiles

我有一个包含一些数据的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]);

但程序停止工作。

1 个答案:

答案 0 :(得分:2)

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

如果要读取整数,请将其读入整数:

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