Formatage d'un caractère spécial dans une chaine

Formatage d'un caractère spécial dans une chaine - C - Programmation

Marsh Posté le 05-01-2005 à 15:56:54    

:hello: lut !
 
J'ai créé 2 tableaux de chaines de caractères :
 

Code :
  1. char *tableau_salt[17]={ "ab","ff","gg","df","rr","fd","kl","az","fd","qd","mo","lf","ll","dl","qs","ss","$1$hXRCdBGR$"};
  2.   char *tableau_pass[17]={   "OCVNDtv/yN6","lFKIEgw8xYM","mooJaXH.zoQ","CidZGf9Q5ZU","ba7Vc.05X7w","MGX/u2USi3w","pnWcb2CQ0io","aoYAqkUliDk","tn.uHMEj3dE","htYUjVPHbxU","BRFuc.dBQxw","h7ZhxutNDw2","pY00Ogf9jlM","kdVlLYDkmDw","DmaN13yoFCQ","Mw5kpjXzR9w","XrQxg7maCz/7bV25VmqTz1"};


 
et lorsque que je les affiches, ils s'affichent bien tous... SAUF le tableau_pass[0] qui est vide...  :??:  :??:  
 
Cela vient-il du "/y" contenu dans la chaine qui pourrais avoir une signification particulière en C, si oui comment formater le caractère spécial "/" ??
 
Merci !

Reply

Marsh Posté le 05-01-2005 à 15:56:54   

Reply

Marsh Posté le 05-01-2005 à 16:00:15    

Ba en faite çà vien pa du "/y" vu que quand je met autre chose il y a le même problème...

Reply

Marsh Posté le 05-01-2005 à 16:01:57    

Code :
  1. char montab[] = { ... }


 
edit : en const c'est même mieux si c'est constant évidemment.


Message édité par pains-aux-raisins le 05-01-2005 à 16:02:39
Reply

Marsh Posté le 05-01-2005 à 16:06:05    

pains-aux-raisins a écrit :

Code :
  1. char montab[] = { ... }


 
edit : en const c'est même mieux si c'est constant évidemment.


Ptit coup de fatigue pains-aux-raisins ?  
Ou bien c'est ta touche étoile qui ne marche plus? ;)

Reply

Marsh Posté le 05-01-2005 à 16:06:58    

lolofora a écrit :

Ba en faite çà vien pa du "/y" vu que quand je met autre chose il y a le même problème...


Ton truc me parraissait tellement gros, que j'ai essayé. Et chez moi, ça marche. C'est donc ton code d'affichage qui merde.
 
D'autre part, comme le dit pains-aux-raisins, c'est un tableau de "const char *"...

Reply

Marsh Posté le 05-01-2005 à 16:08:33    

Ce n'est pas constant,
 
ton code retourne des erreurs "excess elements in char array initializer", il me semble que sans le étoile çà fait just un tacbleau de caractère et non un tableau de chaines de caractère enfin je crois ..

Reply

Marsh Posté le 05-01-2005 à 16:12:24    

lolofora a écrit :


J'ai créé 2 tableaux de chaines de caractères :
<...>
et lorsque que je les affiches, ils s'affichent bien tous... SAUF le tableau_pass[0] qui est vide...  :??:  :??:  


Aucun problème:


[ 0] 'ab                  ' 'OCVNDtv/yN6                   '
[ 1] 'ff                  ' 'lFKIEgw8xYM                   '
[ 2] 'gg                  ' 'mooJaXH.zoQ                   '
[ 3] 'df                  ' 'CidZGf9Q5ZU                   '
[ 4] 'rr                  ' 'ba7Vc.05X7w                   '
[ 5] 'fd                  ' 'MGX/u2USi3w                   '
[ 6] 'kl                  ' 'pnWcb2CQ0io                   '
[ 7] 'az                  ' 'aoYAqkUliDk                   '
[ 8] 'fd                  ' 'tn.uHMEj3dE                   '
[ 9] 'qd                  ' 'htYUjVPHbxU                   '
[10] 'mo                  ' 'BRFuc.dBQxw                   '
[11] 'lf                  ' 'h7ZhxutNDw2                   '
[12] 'll                  ' 'pY00Ogf9jlM                   '
[13] 'dl                  ' 'kdVlLYDkmDw                   '
[14] 'qs                  ' 'DmaN13yoFCQ                   '
[15] 'ss                  ' 'Mw5kpjXzR9w                   '
[16] '$1$hXRCdBGR$        ' 'XrQxg7maCz/7bV25VmqTz1        '


Montre ton code...


Message édité par Emmanuel Delahaye le 05-01-2005 à 16:14:28

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 05-01-2005 à 16:18:05    

Le test d'affichage :
 
 for(z=0;z<17;z++){
 
printf("test%d: crypt=%s sel=%s passwd=%s \n",z,motcrypte,tableau_salt[z],tableau_pass[z]);
 
}
 
résultat :
 
test0: crypt=fh sel=fh passwd=
mot testé: aaaababt avec le salt : ff donne en crypté: ff2IuIMo39Sfk
test1: crypt=fflFKIEgw8xYM sel=ff passwd=lFKIEgw8xYM
mot testé: aaaababt avec le salt : gg donne en crypté: ggvQzHnxxAGg6
 
le reste jusqu'à z=16 marche niquel
 
il y a juste le z=0 pr le tableau_pass qui ne marche pas grrrrrrr

Reply

Marsh Posté le 05-01-2005 à 16:19:12    

çà doit être tout con mais là je sêche ...


Message édité par lolofora le 05-01-2005 à 16:19:28
Reply

Marsh Posté le 05-01-2005 à 16:20:54    

il y avait çà aussi dans la boucle mais je pense pas que çà est intéragit avec, quoi que ...
 
char motcrypte[100]="";
  strcpy(motcrypte,tableau_salt[z]);
   
  strcat(motcrypte,tableau_pass[z]);        
 

Reply

Marsh Posté le 05-01-2005 à 16:20:54   

Reply

Marsh Posté le 05-01-2005 à 16:24:11    

lolofora a écrit :

Ce n'est pas constant


Tu essayes de modifier le contenu du tableau ou des chaînes ?  
Parce que chez moi, les chaînes codées "en dur", sont des chaînes constantes...

Reply

Marsh Posté le 05-01-2005 à 16:31:29    

j'ai mis const et toujours le même problème  
 
maintenant au lieu d'avoir rien j'ai juste un "w"
 
 printf("ESSAI: %s \n",tableau_pass[0]);
 
retourne "ESSAI: w"

Reply

Marsh Posté le 05-01-2005 à 16:36:08    

lolofora a écrit :

j'ai mis const et toujours le même problème  
 
maintenant au lieu d'avoir rien j'ai juste un "w"
 
 printf("ESSAI: %s \n",tableau_pass[0]);
 
retourne "ESSAI: w"


Oui, enfin, c'est pas const qui va t'enlever le problème présent.
 
Quel compilo as-tu, et qu'obtiens tu avec le code minimal ?  
 

Code :
  1. #include <stdio.h>
  2. const char *tableau_salt[]={
  3.   "ab","ff","gg","df","rr","fd","kl","az","fd","qd","mo","lf","ll","dl","qs","ss","$1$hXRCdBGR$"
  4. };
  5. const char *tableau_pass[]={
  6.   "OCVNDtv/yN6","lFKIEgw8xYM","mooJaXH.zoQ","CidZGf9Q5ZU","ba7Vc.05X7w","MGX/u2USi3w",
  7.   "pnWcb2CQ0io","aoYAqkUliDk","tn.uHMEj3dE","htYUjVPHbxU","BRFuc.dBQxw","h7ZhxutNDw2",
  8.   "pY00Ogf9jlM","kdVlLYDkmDw","DmaN13yoFCQ","Mw5kpjXzR9w","XrQxg7maCz/7bV25VmqTz1"
  9. };
  10. int main()
  11. {
  12. int z=0;
  13. const char * motcrypte="aaaababt";
  14. for(z=0;z<17;z++){
  15.     printf("test%d: crypt=%s sel=%s passwd=%s \n",z,motcrypte,tableau_salt[z],tableau_pass[z]);
  16. }
  17. return 0;
  18. }


Message édité par Lam's le 05-01-2005 à 16:36:32
Reply

Marsh Posté le 05-01-2005 à 16:44:13    

Lam's a écrit :

Ptit coup de fatigue pains-aux-raisins ?  
Ou bien c'est ta touche étoile qui ne marche plus? ;)


nan, c'est le modele de markov sur lequel je bosse qui me prend la tete grave  :(

Reply

Marsh Posté le 05-01-2005 à 16:44:40    

çà marche nikel avec ton code en effet

Reply

Marsh Posté le 05-01-2005 à 16:47:57    

En faite çà ne marche plus dès que je rajoute  
 
strcpy(motcrypte,tableau_salt[z]);
   
strcat(motcrypte,tableau_pass[z]);

Reply

Marsh Posté le 05-01-2005 à 16:48:33    

Bah, tu debugges quoi...  
Avec GDB, la commande watch devrait t'aider.  
Avec Visual C++, c'est le menu "watch" aussi, tiens.
A mon avis, tu as un pointeur qui se ballade dans la ville, et qui écrase tes données...

Reply

Marsh Posté le 05-01-2005 à 17:18:59    

Bon j'ai trouver le problème c'était bien un pointeur qui mettait le bordel partout !
 
un strcpy(dest,source) où la source est plus grande que la destination çà ne fait pas bon ménage pour le reste du code ;)
 
Merci à Lam's et pains aux raisins !!

Reply

Marsh Posté le 05-01-2005 à 17:36:19    

comme disait Lam's, pour cette fois il n'y a vraiment pas de quoi... [:ddr555]

Reply

Sujets relatifs:

Leave a Replay

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