Скопировать один байт в определенный индекс массива char

Нужно при помощи memcpy скопировать байт 0x00 в определенный индекс массива char'ов структуры WSABUF (Winsock) lpBuffers->buf Как это сделать?

введите сюда описание изображения

int WSAAPI WSARecv(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);

typedef struct _WSABUF {
    ULONG len;     /* the length of the buffer */
    CHAR FAR *buf; /* the pointer to the buffer */
} WSABUF, FAR * LPWSABUF;

В lpBuffers->buf указатель на массив char'ов где нужно по нужному индексу изменить один байт при помощи memcpy


Ответы (1 шт):

Автор решения: LShadow77

Эмм... У вас lpBuffers - указатель на массив структур WSABUF, в каждой из которых есть поле-указатель на массив char'ов. Соответственно, следующая строка присвоит 0 i-му элементу массива buf в 0-й структуре WSABUF массива lpBuffers:

lpBuffers->buf[i] = 0;

Это эквивалентно следующей строке:

lpBuffers[0].buf[i] = 0;

Для обнуления i-го элемента массива buf j-й структуры WSABUF массива lpBuffers, надо записать:

lpBuffers[j].buf[i] = 0;

Разумеется, мы полагаем, что все указатели buf проинициализированы, и что j<dwBufferCount и i<len.

Не знаю, что вы конкретно желаете получить, мой ответ соответствует полноте вашего вопроса и, надеюсь, окажется для вас полезным.

→ Ссылка