c - 从文件中读取短值并将它们存储到 int 缓冲区中

标签 c types

这可能已经被讨论过,但我找不到任何相关主题。

我想从文件中读取 short 值,并使用 fread 将它们存储在 int 值的缓冲区中。所以基本上我想这样做:

  int *data; //int buffer
  data = (int *) malloc(1000 * sizeof(int));
  fread(data, sizeof(short), 1000, infile); //infile is organized in 2-byte chunks

数据以 2 字节 block ()的形式存储在文件中。但是当我读取这些数据时,我想将它们放入一个 int 缓冲区中。如果不从 short 缓冲区复制到 int 缓冲区,我该怎么做? fread 获取void 指针,因此它不关心缓冲区的类型。

最佳答案

fread 函数不知道类型,这是正确的。这就是为什么它不能读取原始字节并转换它们,它只是将它们按原样放入提供的缓冲区中。如您所知,在大多数平台上,short 是两个字节,而 int 是四个字节。所以这不会起作用,因为 fread 不知道这一点。

您要么一次读取一个 short,将其放入 int 缓冲区,要么读取到一个临时的 short 缓冲区,然后循环并将值逐个复制到 code>int 缓冲区。

关于c - 从文件中读取短值并将它们存储到 int 缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13710902/

相关文章:

c++ - 如何在 C/C++ 中将 int 添加到 char[]

比较c中的两个文件

java - 具有不同数据类型的数组,即字符串和整数。 (面向对象)

MySQL:存储长笔记的最有效数据类型?

c# - TypeScript 从不在 C# 中输入?

haskell - 为什么 GHCi 不允许此版本的连接使用类型参数?

c - 我应该使用什么 C 类型来计算内存中的对象?

c - gets() 在 C 中重复它之前的行

从 RGB 转换为灰度时 cvCvtColor 崩溃

c - 设计代码以适应 CPU 缓存?