iverser des chaines de caracteres

iverser des chaines de caracteres - C++ - Programmation

Marsh Posté le 23-03-2003 à 20:44:23    

salut a tous
j'ai un petit probleme  
voila je souhaite inverser 2 chaine de caracteres
je m'explique avec un exemple:
char n1[20] contient "salut"
char n2[20] contient "ocin"
je souhaiteré que  
n1[20] contient "ocin"
n2[20] contient "salut"
 
alors j'ai fé dans le programme:
n3[20]=n1[20];
n1[20]=n2[20];
n2[20]=n3[20];
mais ca marche pas  
quelqu'un peu m'aider
 
merci d'avance

Reply

Marsh Posté le 23-03-2003 à 20:44:23   

Reply

Marsh Posté le 23-03-2003 à 20:46:14    

tu peux donner ton code s'il te plait, par ce que la je commence à flipper sur tout ce qu'il va falloir reprendre... aboule le source  :bounce:

Reply

Marsh Posté le 23-03-2003 à 20:48:32    

Code :
  1. void main(void)
  2. { int i,r,s;
  3. int a,b,c,e;
  4. int tb[22];
  5. char n1[20];
  6. char n2[20];
  7. char n3[20];
  8. char nom[20];
  9. FILE *fic;
  10. FILE *fi;
  11.    tb[4]=0;
  12.    tb[5]=2;
  13.    tb[6]=3;
  14.    tb[7]=5;
  15.    tb[8]=8;
  16.    tb[9]=12;
  17.    tb[10]=15;
  18.    tb[11]=30;
  19.    tb[12]=60;
  20.    tb[13]=120;
  21.    tb[14]=240;
  22.    tb[15]=480;
  23.    tb[16]=720;
  24.    tb[17]=1000;
  25.    tb[18]=1500;
  26.    tb[19]=3000;
  27.    tb[20]=10000;
  28. fic = fopen("score.txt","r+" ); //ouvrir le fichier
  29. if ( fic==NULL)
  30. {
  31. printf("\n ouverture impossible!" );   //si il n'arrive pas a l'ouvrir
  32. }
  33. fi = fopen("nom.txt","r+" ); //ouvrir le fichier
  34. if ( fi==NULL)
  35. {
  36. printf("\n ouverture impossible!" );   //si il n'arrive pas a l'ouvrir
  37. }
  38. r=0;
  39. for(s=r;s<3;s++)
  40.       {
  41. fscanf(fic,"%d \n",&tb[s]);
  42. }
  43. fscanf(fi,"%[^\n] %[^\n] %[^\n] ",n1,n2,n3);
  44. printf("quel est votre nom ?\n" );
  45. scanf("%s",nom);
  46. a=tb[0];
  47. b=tb[1];
  48. c=tb[2];
  49. i=random(20);
  50. e=tb[i];
  51. if (c<e)
  52.        {
  53. a=b;
  54. *n1=*n2;
  55. b=c;
  56. *n2=*n3;
  57. c=e;
  58. n3[20]=nom[20];
  59. }
  60. if (e<c)
  61. {   if(a<e)
  62. {
  63. a=e;
  64. n1[20]=nom[20];
  65. }
  66.     if (b<e)
  67.        {
  68. a=b;
  69. *n1=*n2;
  70. b=e;
  71. n2[20]=nom[20];
  72. }
  73. }
  74. fprintf(fic,"%d00 \n%d00 \n%d00 \n",a,b,c);
  75. fprintf(fic,"%s \n%s \n%s \n",n1,n2,n3);
  76. fclose(fic);
  77. fclose(fi);
  78. }


 
c'est peut etre pas tres bien ecrit c bon je debute

Reply

Marsh Posté le 23-03-2003 à 21:21:15    

bon, je me suis pas tapé ton code en entier, mais de toutes façons ça peut pas marcher :  
 
qd tu écris char n1[20] en déclaration de variable, tu dis que n1 est un tableau de 20 caractères. Le nom du tableau est donc bien n1. Or ensuite, pour inverser, tu écris n3[20] = n1[20]. Là ce que tu fais, c'est mettre le caractère aytant l'indice 20 du tableau n1 à la place 20 dans le tableau n3. Tu vois donc que tu ne fais l'échange que d'un caractère et non d'un tableau de caractères. De plus, un tableau à 20 cases est indicé de 0 à 19, donc l'indice 20 est en dehors!

Reply

Marsh Posté le 23-03-2003 à 21:37:50    

ben c'est gentil d'avoir chercher mais j'ai trouver
je vais utiliser strcpy qui copy des chaine de caracteres  
c'est dans la librairie <string.h>
 
merci encore
 :hello:

Reply

Marsh Posté le 24-03-2003 à 07:57:43    

ben tu n'avais pas demandé une autre méthode, mais pourquoi celle là ne marchait pas  :D  
il est évident que la librairie string.h contient tout ce qu'il faut pour gérer les chaines de caractère (d'où son nom...). Ceci dit, j'espère que tu as compris les erreurs que tu avais faites

Reply

Marsh Posté le 24-03-2003 à 14:22:57    

TheFox37 a écrit :

... Ceci dit, j'espère que tu as compris les erreurs que tu avais faites


 
ouais, kler j'espère que t'as compris, sinon c'est pas gagné pour l'avenir  :pt1cable:

Reply

Marsh Posté le 24-03-2003 à 15:00:28    

++Taz a écrit :

tu peux donner ton code s'il te plait, par ce que la je commence à flipper sur tout ce qu'il va falloir reprendre... aboule le source  :bounce:  

 
 
:lol:  [:ddt]  
 
au moins c'est sincère & franc  :jap:

Reply

Marsh Posté le 24-03-2003 à 18:41:21    

une remarque entre 1000:
 
c'est bien joli tes messages d'erreur en cas de problème, mais ça ne sert pas à grand chose si tu ne traites pas effectivement ces erreurs. Et ton programme plantera quand meme.
 
our un traitement basique:
exit() de <stdlib.h> est ton ami
les codes de retours standards sont 0, EXIT_SUCCESS et EXIT_FAILURE

Reply

Sujets relatifs:

Leave a Replay

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