addition de caracteres en C ...

addition de caracteres en C ... - C - Programmation

Marsh Posté le 16-11-2009 à 22:37:51    

bonjour !
 
 
j'ai un petit probleme suite a un td pas bien compliqué sur le cryptage d'une chaine de caractere (cryptage de base hein,c'etait juste pour jouer un peu avec les char*)  
fin bref,je ne comprend pas pourquoi ca :
 
chaine_a_encoder[i] += clef[j]  
 
ne fonctionne pas (apres avoir effectué un sizeof sur l'addition,ca me renvoit 4 octets alors qu'un char vaut 1)
 
et que ca :
 
temp[i]= chaine_a_encoder[i]+clef[j]  
 
fonctionne  (avec temp un type string ) :??:  
la premiere solution me renvoit systematiquement un bon segmentation fault !
 
 
pourquoi ne peut on pas directement additionner les codes ASCII dans la chaine a encoder ?


Message édité par dindon_sauvage le 16-11-2009 à 22:51:30
Reply

Marsh Posté le 16-11-2009 à 22:37:51   

Reply

Marsh Posté le 16-11-2009 à 22:51:47    

Ouais, et je suppose que tu as déclaré ta chaine de la façon suivante :

Code :
  1. char * chaine_a_encoder = "bla bla";


 
Parce que si tu l'avais déclarée comme ceci, ça aurait fonctionné :

Code :
  1. char chaine_a_encoder[] = "bla bla";


 
Ha, ha, c'est amusant le C, hein ? En fait les chaines statiques (quand elles ne servent de raccourci pour à initialiser un tableau), sont marquées comme lecture seule. En général le compilo optimise en regroupant les chaines semblables, en faisant pointer sur le même bloc mémoire. Donc si tu modifiais une telle chaine à un endroit, il y aurait des effets de bords à d'autres endroits (soit dans 99% des cas, un plantage). Donc vaut mieux se prendre un SEG FAULT le plus tôt possible.

Reply

Marsh Posté le 16-11-2009 à 23:06:15    

oki merci de l'explication,je ne pensais pas que c'etait aussi tordu que ca  :jap:

Reply

Sujets relatifs:

Leave a Replay

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