Débutant en C
Résolu
AlKiir
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
AlKiir Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
AlKiir Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de coder un petit programme en C:
On tape un texte (a la console pour le moment)
Certaines lettres du textes sont changées (ici le a, b, c et d)
code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *text;
int pos=0;
scanf("%s", text);
do
{
if (text[pos]="a")
{
text[pos]="+";
}
if (text[pos]="b")
{
text[pos]="-";
}
if (text[pos]="c")
{
text[pos]="×";
}
if (text[pos]="d")
{
text[pos]="÷";
}
pos++;
}
while(pos <20);
printf("%d", text);
return 0;
}
Donc je ne voie pas du tout ou ca ne marche pas
Un conseil?
Merci
J'essaie de coder un petit programme en C:
On tape un texte (a la console pour le moment)
Certaines lettres du textes sont changées (ici le a, b, c et d)
code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *text;
int pos=0;
scanf("%s", text);
do
{
if (text[pos]="a")
{
text[pos]="+";
}
if (text[pos]="b")
{
text[pos]="-";
}
if (text[pos]="c")
{
text[pos]="×";
}
if (text[pos]="d")
{
text[pos]="÷";
}
pos++;
}
while(pos <20);
printf("%d", text);
return 0;
}
Donc je ne voie pas du tout ou ca ne marche pas
Un conseil?
Merci
A voir également:
- Débutant en C
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
- Platine dj debutant - Forum Enregistrement / Traitement audio
- Comment utiliser un ordinateur pour un débutant - Astuces et Solutions
6 réponses
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] ;
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