这可能已经被讨论过,但我找不到任何相关主题。
我想从文件中读取 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/