inversé une chaine de caractere

inversé une chaine de caractere - C - Programmation

Marsh Posté le 02-11-2006 à 14:22:51    

bonjour le forum  
 
je butte un peu sur un petit programme pas bien méchant mais comme je n'est pas programmé depuis un certain temps ma mémoire me fais des tour
 
 
ce que je voudrai c'est taper une phrase et que on me la renvoi à l'envers  
 
exemple :  
 
bonjour tout le monde deviens ednom tuot ruojnob  
 
 
si vous pouviez m'aider

Reply

Marsh Posté le 02-11-2006 à 14:22:51   

Reply

Marsh Posté le 02-11-2006 à 14:33:35    

Tu parcours le char* contenant ta chaine de strlen(detachaine)-1 à 0, en affichant chaque caractère.
 
Ce ne serait pas un exercice de cours par hasard ?

Reply

Marsh Posté le 02-11-2006 à 15:06:55    

ah non pas du tout ... remarque il me semble l'avoir eu pour exercice quand j'etais en cours  
mais la c'est juste par faint néantise  
 
je suis sur un forum de discussion et il y a ce jeu .. bref pas envi de m'embeté alors autant programmer :D

Reply

Marsh Posté le 02-11-2006 à 15:21:16    

angelo78 a écrit :

ah non pas du tout ... remarque il me semble l'avoir eu pour exercice quand j'etais en cours


Ca ne serait pas étonnant non.
 

angelo78 a écrit :

mais la c'est juste par faint néantise  
je suis sur un forum de discussion et il y a ce jeu .. bref pas envi de m'embeté alors autant programmer :D


Bah tiens si tu t'ennuies:
http://www.bescherelle.com/


---------------
Töp of the plöp
Reply

Marsh Posté le 02-11-2006 à 15:29:51    

lol c'est pour le mot  faineantise ??  
 
je sais jamais comment cela s'ecrit ...  
 

Reply

Marsh Posté le 02-11-2006 à 15:36:02    

angelo78 a écrit :

lol c'est pour le mot  faineantise ??  
je sais jamais comment cela s'ecrit ...


 
c'est pour ta syntaxe et ta grammaire en général. Effectivement, l'orthographe a l'air de faire partie de tes lacunes.


---------------
Töp of the plöp
Reply

Marsh Posté le 02-11-2006 à 15:49:37    

bon j'admet  
 
 
pour en revenir au sujet  
 
voici un debut de code alors je ne sais pas si ca viens de chez moi mais quans je le lance ca met toujours une erreur qui m'oblige meme à quitter le terminal  
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.     char * message; 
  6.     scanf("%s", & message);
  7.     for (int i=strlen(message);i>-1;i--)
  8.     {
  9.         printf("%s\n",message[i]);
  10.     }
  11.     return 0;
  12. }

Reply

Marsh Posté le 02-11-2006 à 15:53:13    

quelle est l'erreur ?


---------------
Töp of the plöp
Reply

Marsh Posté le 02-11-2006 à 15:57:00    

justement ce n'est pas une erreur venant de la compilation  
 
je travail sous windows et lorsque je lance le programme il me met le fameux ecran qui signal  que le fichier a rencontré un probleme et qu'il doit fermé avec la possibilité d'envoyer un rapport ou non  
 
donc peut etre que c'est mon logiciel pour programmer qui déconne ?  
 
j'utilise Dev C++

Reply

Marsh Posté le 02-11-2006 à 16:04:43    

Au hazard, essaye d'allouer de la mémoire pour ta chaîne de caractères et puis passe à scanf l'adresse de début de la chaine.


Message édité par LetoII le 02-11-2006 à 16:09:49
Reply

Marsh Posté le 02-11-2006 à 16:04:43   

Reply

Marsh Posté le 02-11-2006 à 16:28:52    

angelo78 a écrit :

justement ce n'est pas une erreur venant de la compilation  
je travail sous windows et lorsque je lance le programme il me met le fameux ecran qui signal  que le fichier a rencontré un probleme et qu'il doit fermé avec la possibilité d'envoyer un rapport ou non


Les reflexes à avoir:
Debug et vérifie les valeurs de tes variables à chaque étape de ton déroulement.
Vérifie les initialisations.
Vérifie que tu te sers correctement des fonctions mises en jeu.
Vérifie que tes pointeurs on de la mémoire qui leur est allouée (tip)
 
 

angelo78 a écrit :

donc peut etre que c'est mon logiciel pour programmer qui déconne ?


C'est rarement ca !


Message édité par _darkalt3_ le 02-11-2006 à 16:29:29

---------------
Töp of the plöp
Reply

Marsh Posté le 02-11-2006 à 18:52:08    

1) Te ne lis pas la chaine comme il faut. Avec %s il faut passer a scanf un char *, qui est l'adresse d'un buffer. Donc en gros dans ton cas il faut soit char message[1024], soit tu gardes un char * mais il faut allouer un buffer avec malloc.
 
2) Lire un %s avec scanf c'est dangereux, parce qu'il n'y a pas de controle sur la taille des donnees lues. En fait il peut y a avoir un controle, mais vu ton niveau utilises plutot fgets.
 
3) Dans printf, %s affiche une chaine, pas un charactere. Il te faut soit %c, soit (mieux) utiliser fputc.
 
4) C'est juste une question de style, mais c'est idiot de controler i > -1 alors que i >= 0 marche aussi bien, sans deborder des plages de valeurs qui ont un sens pour i (le jour ou tu a un unsigned, tu fera comment ?).

Reply

Marsh Posté le 02-11-2006 à 19:54:50    

angelo78 a écrit :

Code :
  1. {
  2.     char * message; 
  3.     scanf("%s", & message);



Tu passes l'adresse d'une variable d'une taille de quelques bytes à scanf() ? T'as peur de rien : si le mot tapé dépasse ces quelques bytes, c'est le drame...
 
Au fait, mon compilateur n'aime pas du tout... Le tien devrait être mieux réglé...

Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums2\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c: In function `main':
main.c:8: warning: char format, pointer arg (arg 2)
main.c:9: error: 'for' loop initial declaration used outside C99 mode
main.c:11: warning: format argument is not a pointer (arg 2)
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 2 warnings



---------------
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

Sujets relatifs:

Leave a Replay

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