簡體   English   中英

為2D數組指定指針值

[英]Assigning a value of pointer to a 2D array

我有以下這段代碼正常工作:

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);
} 

但我相信有更好的方法可以做到這一點。

謝謝。

但我相信有更好的方法可以做到這一點。

是的,直接讀入數組。 不需要中間緩沖區。

我猜你的文件是一堆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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM