как обратиться к части (1-D) массива? - PullRequest
1 голос
/ 28 августа 2010

Я новый пользователь в программировании на C. Я пытался исследовать это онлайн, но не смог найти ответ ... как получить доступ к части массива в C? Например,

int Data[4]
int Input[32]

Каков синтаксис для выполнения: Данные = Ввод [12:15] такой, что

Data[0] = Input[12]
Data[1] = Input[13]
Data[2] = Input[14]
Data[3] = Input[15]

На самом деле я пытаюсь заполнить часть массива с помощью сокета TCP:

recv(MySocket, YRaw[indx:indx+1024], sizeChunk, 0)

где я хочу, чтобы полученные данные были помещены в массив YRaw от индекса массива 'indx' до 'indx + 1024'.

Заранее спасибо, gkk

Ответы [ 3 ]

1 голос
/ 28 августа 2010

Для копирования объектов из одного массива в другой вы можете использовать memcpy:

#include "string.h"

memcpy(&input[12], &data[0], 4*sizeof(int)); /* source, destination, number of bytes to copy */

В случае с recv вы делаете то же самое - вы передаете указатель на начало ичисло байтов:

recv(sock, &YRaw[indx], sizeChunk*sizeof(int), 0); /* sizeChunk is hopefully 1024 */

Редактировать: Я забыл sizeof из второго примера, поэтому добавил его.

0 голосов
/ 28 августа 2010

Вы можете использовать указатель-арифметику:

recv(MySocket, YRaw + indx, sizeof(int) * 1024, 0);

В этом случае recv поместит первое int в YRaw [indx], второе в YRaw [indx + 1] и т. Д.

В этом примере я предположил, что вы хотите прочитать целые числа из сокета.

Кроме того, не забудьте проверить возвращаемое значение.

0 голосов
/ 28 августа 2010

может использовать memcpy

...