[C] Initialisation un peu spéciale d'une chaine à la déclaration

Initialisation un peu spéciale d'une chaine à la déclaration [C] - C - Programmation

Marsh Posté le 21-08-2003 à 14:10:04    

:hello: all
 
Voilà, dans une fonction, j'ai une déclaration de chaine de longueur fixe:
 
char modele1[5];
 
Ce que je voudrais, c'est affecter une valeur à cette chaine. Il suffirait de faire qquechose comme
char modele1[5]="salut", et de mettre un \0 à la fin.
Maintenant, le souci c'est que je dois initialiser la chaîne avec des valeurs qui ont un code ascii 0 et 1 (pas '0' ni '1')...
Comment j'peux faire? :p Ya toujours la solution d'initialiser les chars un par un, mais c'est pas terrible :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 21-08-2003 à 14:10:04   

Reply

Marsh Posté le 21-08-2003 à 14:11:30    

Ben avec \<valeur>
 
PS : char modele1[5]="salut", et de mettre un \0 à la fin.
Le \0 est mis automatiquement dans "salut".


Message édité par HelloWorld le 21-08-2003 à 14:12:33

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 21-08-2003 à 14:13:24    

char modele1[5]="salut"
 
 
il est ou le \0 là ?
 
 
ben sinon
 
tu utilise les notations hexas ou octales
 
\x00 \x01
\000 \001

Reply

Marsh Posté le 21-08-2003 à 14:19:35    

Mon exemple était pas très clair :(
 
Dans la chaîne, il faut que la valeur ascii de mes chars soit 0 ou 1... :/
Il faut qu'elles ressemblent à 00110 et 00011, et pas '0''0''1''1''0', donc valeur ascii 0 ou 1 et pas 48 ou 49...
Pas possible donc d'initialiser ça avec
char modele1[5]="00110" ou char modele1[5]=00110 :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 21-08-2003 à 14:22:39    

freds45 a écrit :

Mon exemple était pas très clair :(
 
Dans la chaîne, il faut que la valeur ascii de mes chars soit 0 ou 1... :/
Il faut qu'elles ressemblent à 00110 et 00011, et pas '0''0''1''1''0', donc valeur ascii 0 ou 1 et pas 48 ou 49...
Pas possible donc d'initialiser ça avec
char modele1[5]="00110" ou char modele1[5]=00110 :/


 
...et c'est pour ça que Taz te dis d'initialiser avec
"\000\001" pour avoir une chaine contenant les codes ASCII 0 et 1.
Enfin, je pense...

Reply

Marsh Posté le 21-08-2003 à 14:25:52    

Bon, j'ai trouvé une solution :p
 
http://www.eng.iastate.edu/efmd/ciochar.html#initial

Citation :


String Initialization
Strings can be initialized with either a brace enclosed character list, or a string constant.  
e.g.  char str[4] = {'U', 'S', 'A', '\O';}
 


 
Dans mon code, j'ai remplacé ça par:
char modele1[5] = {0, 0, 1, 1, 0};
 
et c'est bon :jap: ça roule
J'ai pas trop compris l'exemple de Taz avec les \001 et \000 par contre :??:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 21-08-2003 à 14:26:07    

sinon, je suis naz
 
yes "les char sont des int"
 

Code :
  1. char c[]={
  2. 1, 1, 0, 1, 1, 1, 1, 0,
  3. 1, 0, 1, 0, 1, 1, 0, 0,
  4. 1, 0, 1, 1, 1, 1, 1, 0,
  5. 1, 1, 1, 0, 1, 1, 1, 1
  6. };


 
(0xdeadbeef pour les bilgeux)

Reply

Marsh Posté le 21-08-2003 à 14:37:12    

Taz a écrit :

sinon, je suis naz
 
yes "les char sont des int"
 

Code :
  1. char c[]={
  2. 1, 1, 0, 1, 1, 1, 1, 0,
  3. 1, 0, 1, 0, 1, 1, 0, 0,
  4. 1, 0, 1, 1, 1, 1, 1, 0,
  5. 1, 1, 1, 0, 1, 1, 1, 1
  6. };


 
(0xdeadbeef pour les bilgeux)


 
Comment il se la pete :p

Reply

Marsh Posté le 21-08-2003 à 14:44:01    

Citation :

sinon, je suis naz


 
Taz ou naz ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 21-08-2003 à 14:44:44    

HelloWorld a écrit :

Citation :

sinon, je suis naz


 
Taz ou naz ...


 
naz !:D

Reply

Marsh Posté le 21-08-2003 à 14:44:44   

Reply

Marsh Posté le 21-08-2003 à 14:47:35    

Citation :

char modele1[5]="salut"
 
il est ou le \0 là ?
 


 

Code :
  1. char modele1[5]="salut";


 

Citation :

test.cpp (12): error C2117: 'modele1' : dépassement des limites du tableau


Message édité par HelloWorld le 21-08-2003 à 14:48:28

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 21-08-2003 à 14:48:14    

il est 14h48 et je suis encore modo  :whistle:

Reply

Marsh Posté le 21-08-2003 à 15:25:44    

Taz a écrit :

il est 14h48 et je suis encore modo  :whistle:  


 
Parce que t'es juste un modo intérimaire ?

Reply

Marsh Posté le 21-08-2003 à 15:28:32    

El_gringo a écrit :


 
Parce que t'es juste un modo intérimaire ?

je suis un bot

Reply

Marsh Posté le 21-08-2003 à 15:37:54    

Taz a écrit :

je suis un bot


 
J'sais pas que t'as programmé, mais il se sont pas foulés puor l'IA ! :D

Reply

Marsh Posté le 21-08-2003 à 15:39:01    

El_gringo a écrit :


 
J'sais pas que t'as programmé, mais il se sont pas foulés puor l'IA ! :D

ma sémantique est aussi très limitée, ce qui m'empeche de comprendre tout sorte d'humour

Reply

Marsh Posté le 21-08-2003 à 15:59:39    

Dommage qu'il fasse pas d'erreurs de parsing :'(

Reply

Marsh Posté le 23-08-2003 à 21:39:54    

Taz a écrit :

char modele1[5]="salut"
 
 
il est ou le \0 là ?


 
il est dans la syntaxe "..",  
 
"bonjour" = {'b','o','n','j','o','u','r','\0'}
 
et les \<valeur> sache que ça marche très bien, c'est en octal.
 
"\001\000\002" c'est une chaîne valide.


---------------
Envie de backuper un DVD en DivX mais vous y connaissez rien ? essayez dvd-ripp : le site de Maxime
Reply

Marsh Posté le 23-08-2003 à 21:46:50    

jesus_christ a écrit :


 
il est dans la syntaxe "..",  


 
il est ptet dans la syntaxe "", mais pas dans ta chaine a l'arrivée...
 
char modele1[5]="salut";
 
error C2117: 'modele1' : array bounds overflow
 
un 5 a la place du 6 et la c'est bon.

Reply

Marsh Posté le 23-08-2003 à 21:47:15    

jesus_christ a écrit :


 
il est dans la syntaxe "..",  
 
"bonjour" = {'b','o','n','j','o','u','r','\0'}
 
et les \<valeur> sache que ça marche très bien, c'est en octal.
 
"\001\000\002" c'est une chaîne valide.

Toi t'as rien compris à sa remarque, va t'coucher :p

Reply

Marsh Posté le 23-08-2003 à 21:47:59    

Konar a écrit :

un 5 a la place du 6 et la c'est bon.

T'as inversé je crois :D

Reply

Marsh Posté le 23-08-2003 à 21:50:08    

*Syl* a écrit :

T'as inversé je crois :D


 
moui c'est possible.
on va dire que c'est la chaleur.

Reply

Marsh Posté le 23-08-2003 à 22:03:36    

Konar a écrit :


 
moui c'est possible.
on va dire que c'est la chaleur.

j'ai une autre possibilité à l'esprit  :D

Reply

Marsh Posté le 23-08-2003 à 22:21:23    

*Syl* a écrit :

Toi t'as rien compris à sa remarque, va t'coucher :p

arf merde je croyais répondre à freds45, désolai
 
 [:dehors2]  


---------------
Envie de backuper un DVD en DivX mais vous y connaissez rien ? essayez dvd-ripp : le site de Maxime
Reply

Marsh Posté le 23-08-2003 à 22:44:52    

Taz a écrit :

j'ai une autre possibilité à l'esprit  :D  


 
euh... koi ca ?
je redoute le pire...

Reply

Marsh Posté le 24-08-2003 à 17:59:31    

jesus_christ a écrit :

arf merde je croyais répondre à freds45, désolai
 
 [:dehors2]  
 


 
 :heink:  :o

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed