我有以下这段代码工作正常:
int array[16][2] = {{0}};
void *buffer_ptr = NULL;
get_buffer(&buffer_ptr); // This is a function which gives me the address of
buffer ptr
file_read(handle, size, buffer_ptr); // This function reads and stores data into buffer_ptr
现在我想将这个读取值复制到 buffer_ptr 到数组中。我目前正在这样做:
for (i = 0; i < 16; i++)
{
array[i][0] = *((int *)buffer_ptr+(2*i));
array[i][1] = *((int *)buffer_ptr+(2*i)+1);
}
但我确信有更好的方法来做到这一点。
谢谢。
最佳答案
But I am sure there is a better way to do this.
对,直接读入数组。不需要中间缓冲区。
我猜你的文件是一堆 4 字节的整数,你希望一次有两个。首先,为 array
使用固定宽度的类型,否则您可能会得到错误大小的整数。
#include <stdint.h>
int32_t array[16][2] = {{0}};
然后直接从文件中读入数组,一次读入两个 4 字节整数。
FILE *fp = fopen(file, "rb");
if( fp == NULL ) {
fprintf(stderr, "Could not open '%s' for reading: %s\n", file, strerror(errno));
exit(1);
}
for (int i = 0; i < 16; i++)
{
fread(array[i], 4, 2, fp);
}
我相信您甚至可以将其减少到一次阅读。
fread(array, 4, 32, fp);
关于c - 将指针的值分配给二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42941268/