2009-05-19 7 views
14

Je suis en train de déboguer une application réseau.tableau d'octets de codage en dur dans C

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.

Répondre

30

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

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

Notez que vous devez également utiliser la syntaxe "char foo []" en C++ –

2

Does not

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

travail?

5

Essayez avec:

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

Juste pour être complet, avec C99, vous pouvez également utiliser un composé littéraux:


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

Si la compatibilité du code source C++ est une exigence, vous feriez mieux de ne pas utiliser cette construction, car les c'est - afaik - ne fait pas partie de la norme C++.

Questions connexes