Débutant en C
Résolu/Fermé
AlKiir
Messages postés
42
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
14 mai 2011
-
24 juil. 2009 à 18:13
AlKiir Messages postés 42 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 14 mai 2011 - 26 juil. 2009 à 21:09
AlKiir Messages postés 42 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 14 mai 2011 - 26 juil. 2009 à 21:09
6 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
25 juil. 2009 à 00:48
25 juil. 2009 à 00:48
Salut,
Plusieurs erreurs dans ton code :
char *text; scanf("%s", text);
Aucune allocation de faite, donc ça peut envoyer un joli segfault. Tu peux passer par un tableau plutôt que d'utiliser une allocation dynamique. Par exemple :
char text[20]; scanf("%19s",text);
if (text[pos]="a")
Plusieurs erreurs dans cette ligne. Tu souhaites comparer un char avec une chaîne de caractères, ce qui n'est pas possible. Si tu veux tester text[pos] avec le caractère 'a', tu dois utiliser les apostrophes, et utiliser l'opérateur de comparaison (double égal). L'opérateur simple égal sert pour l'affectation.
Ce qui donnerait : if(text[pos]=='a')
text[pos]="+";
Ici tu souhaites réaliser une affectation, donc il s'agit effectivement du simple opérateur égal. Mais tu souhaites affecter un caractère et non une chaîne. Il faut donc utiliser l'integer '+' (entre apostrophe).
Soit : text[pos]='+';
De même pour l'ensemble des if et de leurs blocs.
printf("%d", text);
Et enfin pour afficher, une chaîne, il faut utiliser %s et non %d.
Correction : printf("%s", text);
Sinon d'une manière générale sur ton code, tu pourrais utiliser un switch pour la clarté. ;-))).
Cdlt
Plusieurs erreurs dans ton code :
char *text; scanf("%s", text);
Aucune allocation de faite, donc ça peut envoyer un joli segfault. Tu peux passer par un tableau plutôt que d'utiliser une allocation dynamique. Par exemple :
char text[20]; scanf("%19s",text);
if (text[pos]="a")
Plusieurs erreurs dans cette ligne. Tu souhaites comparer un char avec une chaîne de caractères, ce qui n'est pas possible. Si tu veux tester text[pos] avec le caractère 'a', tu dois utiliser les apostrophes, et utiliser l'opérateur de comparaison (double égal). L'opérateur simple égal sert pour l'affectation.
Ce qui donnerait : if(text[pos]=='a')
text[pos]="+";
Ici tu souhaites réaliser une affectation, donc il s'agit effectivement du simple opérateur égal. Mais tu souhaites affecter un caractère et non une chaîne. Il faut donc utiliser l'integer '+' (entre apostrophe).
Soit : text[pos]='+';
De même pour l'ensemble des if et de leurs blocs.
printf("%d", text);
Et enfin pour afficher, une chaîne, il faut utiliser %s et non %d.
Correction : printf("%s", text);
Sinon d'une manière générale sur ton code, tu pourrais utiliser un switch pour la clarté. ;-))).
Cdlt
char * text est un pointeur et il n'y a pas d'allocation de mémoire !
il suffit de declarer un tableau char text[21] ;
il suffit de declarer un tableau char text[21] ;
AlKiir
Messages postés
42
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
14 mai 2011
24 juil. 2009 à 19:26
24 juil. 2009 à 19:26
Merci, ca ne plante déjà plus, mais je n'obtiens toujours pas le résultat prévus lol
maintenant j'ai un résultat qu'avec des +++++
Merci pour votre temps
maintenant j'ai un résultat qu'avec des +++++
Merci pour votre temps
bonjour,
c'est normal que tu ai des +++, une string s'imprime avec %s et pas %d
remplace par printf("%s", text); et ça devrait aller mieux !
c'est normal que tu ai des +++, une string s'imprime avec %s et pas %d
remplace par printf("%s", text); et ça devrait aller mieux !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
i.amghari5
Messages postés
27
Date d'inscription
vendredi 24 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2009
2
25 juil. 2009 à 16:34
25 juil. 2009 à 16:34
tu doit mettre à la fin du programme getch(); avant return0;
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
25 juil. 2009 à 16:45
25 juil. 2009 à 16:45
Vaut mieux mettre getchar() car getch() n'est pas portable.
D'ailleurs, il faudrait mettre deux getchar() à cause du '\n' stocké dans le buffer à cause du scanf.
D'ailleurs, il faudrait mettre deux getchar() à cause du '\n' stocké dans le buffer à cause du scanf.
AlKiir
Messages postés
42
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
14 mai 2011
26 juil. 2009 à 21:09
26 juil. 2009 à 21:09
Merci beaucoup! ca marche super maintenan