2010-08-27 5 views
1

Je suis un nouvel utilisateur de la programmation C. J'ai essayé de rechercher ceci en ligne, mais n'ai pas pu trouver une réponse ... comment j'accède à une partie d'un tableau dans C? Par exemple,comment adresser une partie d'un tableau (1-D)?

int Data[4] 
int Input[32] 

Quelle est la syntaxe pour faire: Data = entrée [12:15] tel que

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

En réalité, je suis en train de remplir une partie d'un tableau à l'aide d'un socket TCP :

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

où je veux que les données reçues à placer dans le tableau de YRaw index de tableau 'indx' à 'indx + 1024'.

Merci à l'avance, GKK

Répondre

1

Pour copier les choses d'un tableau à un autre, vous pouvez utiliser memcpy:

#include "string.h" 

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

Dans le cas de recv, vous faites le même chose - vous passez dans le pointeur au début et le nombre d'octets:

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

Editer: J'ai oublié sizeof à partir du deuxième exemple, donc je l'ai ajouté.

+0

Parfait! Je vous remercie!!! – ggkmath

+0

OK, maintenant cela a plus de sens, MERCI Matti! – ggkmath

0

pourrait utiliser memcpy

0

Vous pouvez utiliser pointer-Arithmétique:

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

Dans ce cas, recv placera le premier int à YRaw [indx], le second à YRaw [indx + 1], et ainsi de suite.

Dans cet exemple, j'ai supposé que vous souhaitiez lire des entiers à partir du socket.

N'oubliez pas non plus de vérifier la valeur de retour.

+0

fera, merci! – ggkmath

Questions connexes