Скопировать один байт в определенный индекс массива 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 шт):
Эмм... У вас 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.
Не знаю, что вы конкретно желаете получить, мой ответ соответствует полноте вашего вопроса и, надеюсь, окажется для вас полезным.
