probleme en programmation c "chaine de caracteres dans une fonction

probleme en programmation c "chaine de caracteres dans une fonction - C - Programmation

Marsh Posté le 13-11-2017 à 23:31:59    

j ai écrit un code qui décale les alphabets dans une chaîne de caractères, et ça se compile mais en exécution le programme s’arrête :heink: , et j arrive pas à trouver le problème, je pose si dessous mon code si vous pouvez m'aider   :(  :whistle:  

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. char decale(char c, char debut, int decalage)
  5. {
  6. while (decalage<0)
  7. {
  8.  decalage+=26;
  9. }
  10. return debut + (((c - debut) + decalage) % 26);
  11. }
  12. char codec(int d, char c)
  13. {
  14.  if(c>='a'&&c<='z')
  15. {
  16.  return decale(c,'a',d);
  17. }
  18. else if(c>='A'&&c<='Z')
  19. {
  20.  return decale(c,'A',d);
  21. }
  22. return d;
  23. }
  24. char* code(char* chaine ,int n)
  25. {
  26. int i;
  27. for(i=0; i<strlen(chaine);i++)
  28. {
  29.  chaine[i]=codec(n,chaine[i]);
  30. }
  31. return chaine;
  32. }
  33. char* decode(char*chaine , int n)
  34. {
  35. int i;
  36. for(i=0; i<strlen(chaine);i++)
  37. {
  38.  chaine[i]=codec(-n,chaine[i]);
  39. }
  40. return chaine;
  41. }
  42. main(){
  43. int n;
  44. char * chaineE , *chaineS;
  45. printf("entrer un entier de decalage: " );
  46. scanf("%d",&n);
  47. printf("entrez votre chaine ici : " );
  48. scanf("%s",chaineE);
  49.     chaineS =code(chaineE,n);
  50.     printf("la nouvelle chaine avec le decalage de %d est : \n %s\n",n,chaineS);
  51.  printf("la nouvelle chaine avec le decalage de %d est : \n %s",n,decode(chaineS,n));
  52. getch();
  53. }


Message édité par gilou le 14-11-2017 à 22:15:32
Reply

Marsh Posté le 13-11-2017 à 23:31:59   

Reply

Marsh Posté le 13-11-2017 à 23:47:18    

Tu devrais revoir les bases des chaînes de caractères en C. Une chaîne de caractères c'est un tableau avec '\0' comme dernier élément. Il en suit qu'il faut réserver de la place avant de demander à l'utilisateur de saisir quelque chose. De même on ne peut PAS passer une chaîne de caractères comme argument, on peut passer uniquement un pointeur vers cette chaîne. On ne peut pas non plus assigner une chaîne avec '='.
C'est un peu compliqué tout ça mais essentiel, je te conseille de relire ton cours ou un bon livre (ou tutoriel mais faut se méfier un peu de ce qu'on trouve sur le net parfois).
Tu devrais mettre ton code entre balises http://forum-images.hardware.fr/icones/message/c.gif. edit: Merci gilou. :jap:

 

Aussi tu devrais activer (et prendre en compte) les warnings de ton compilateur (pour GCC: rajouter -Wall voire -Werror aussi aux arguments en ligne de commande):

Citation :

test.c:47:1: warning: return type defaults to 'int' [enabled by default] <-- c'est int main(void)
test.c: In function 'main':
test.c:60:2: warning: implicit declaration of function 'getch' [-Wimplicit-function-declaration] <-- le header est conio.h
test.c:54:7: warning: 'chaineE' is used uninitialized in this function [-Wuninitialized] <-- à ignorer, le code est faux.


Message édité par rat de combat le 17-11-2017 à 19:52:01
Reply

Sujets relatifs:

Leave a Replay

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