web-dev-qa-db-fra.com

tableau d'octets codés en C

Je débogue une application réseau.

Je dois simuler certaines des données échangées pour que l'application fonctionne. En C++, vous pouvez faire quelque chose comme

char* myArray = { 0x00, 0x11, 0x22 };

Cependant, je n'arrive pas à trouver un équivalent C pour cette syntaxe.

Fondamentalement, je veux juste remplir un tableau avec des valeurs codées en dur.

22
Eric

Vous pouvez faire la même chose en C, mais vous devez le déclarer de type char[], ne pas char*, afin que vous puissiez obtenir sa taille avec l'opérateur sizeof:

char myArray[] = { 0x00, 0x11, 0x22 };
size_t myArraySize = sizeof(myArray);  // myArraySize = 3
44
Adam Rosenfield

Par souci d'exhaustivité, avec C99, vous pouvez également utiliser des littéraux composés:


    char *myArray = (char []) {0x00, 0x11, 0x22 };

Si la compatibilité du code source avec C++ est une exigence, il vaut mieux ne pas utiliser cette construction, car elle - afaik - ne fait pas partie de la norme C++.

5
quinmars

Essayez avec:

char myArray[] = { 0x00, 0x11, 0x22 };
5
jbradaric

Ne fait pas

char myArray[] = {0x00, 0x01,0x02};

travail?

2
Tom
2
none