C 将指针的值指定给二维数组

C 将指针的值指定给二维数组,c,arrays,pointers,C,Arrays,Pointers,我有以下代码,运行良好: 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_pt

我有以下代码,运行良好:

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
现在,我想将这个读取值复制到缓冲区中,并复制到数组中。我目前正在做这项工作:

for (i = 0; i < 16; i++)
{
    array[i][0] = *((int *)buffer_ptr+(2*i));
    array[i][1] = *((int *)buffer_ptr+(2*i)+1);
} 
(i=0;i<16;i++)的

{
数组[i][0]=*((int*)缓冲区_ptr+(2*i));
数组[i][1]=*((int*)缓冲区_ptr+(2*i)+1);
} 
但我相信有更好的方法来做到这一点

谢谢

但我相信有更好的方法来做到这一点

是的,直接读入数组。不需要中间缓冲区

我猜你的文件是一堆4字节的整数,你想要一次两个。首先,对数组使用固定宽度类型,否则可能会得到错误的整数大小

#include <stdint.h>

int32_t array[16][2] = {{0}};
但我相信有更好的方法来做到这一点

是的,直接读入数组。不需要中间缓冲区

我猜你的文件是一堆4字节的整数,你想要一次两个。首先,对数组使用固定宽度类型,否则可能会得到错误的整数大小

#include <stdint.h>

int32_t array[16][2] = {{0}};

get\u buffer
做什么?您的评论不是很有启发性,因为您已经知道
buffer\u ptr
的地址。这更像是一个问题,您可能需要
memcpy(&array,buffer\u ptr,sizeof array)文件的格式是什么?
get\u buffer
做什么?您的评论不是很有启发性,因为您已经知道
buffer\u ptr
的地址。这更像是一个问题,您可能需要
memcpy(&array,buffer\u ptr,sizeof array)文件的格式是什么?我不能直接读取。直接从内存中读取时得到某些限制区域。我给buffer_ptr一个特定的地址,该地址是开放的,可以读入,但数组只是一个局部变量,它将进入堆栈,我无法从堆栈中的外部内存中读取。@R.P.您需要详细说明您的问题。我无法直接读取。直接从内存中读取时得到某些限制区域。我给buffer_ptr一个特定的地址,该地址是开放的,可以读入,但数组只是一个局部变量,它将进入堆栈,我无法从堆栈中的外部内存中读取。@R.P.您需要详细说明问题中发生了什么。
fread(array, 4, 32, fp);