Getchar (langage C)
Résolu/Fermé
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
-
7 juil. 2008 à 21:33
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 juil. 2008 à 23:57
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 juil. 2008 à 23:57
A voir également:
- Getchar (langage C)
- D langage c ✓ - Forum C
- Langage ascii - Guide
- Et en langage c - Astuces et Solutions
- Langage linux - Forum Linux / Unix
- Mini projet en langage c corrigé - Forum C
9 réponses
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 juil. 2008 à 21:57
7 juil. 2008 à 21:57
Re,
voici un autre code qui ne fonctionne pas...
J'ai bien comme retour ce que l'utilsiateur note mais pas les réponses demandée...
Merci d'avance pour votre aide
voici un autre code qui ne fonctionne pas...
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c, ne, nt, nf;
ne = nt = nf = 0; //nombre d'espace, tabulation et fin de ligne
while (( c = getchar ()) != EOF)
{
if (c == ' ')
++ne;
if (c == '\t')
++nt;
if (c == '\n')
++nf;
}
printf("%d %d %d\n", ne, nt, nf);
return 0;
}
J'ai bien comme retour ce que l'utilsiateur note mais pas les réponses demandée...
Merci d'avance pour votre aide
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
7 juil. 2008 à 21:52
7 juil. 2008 à 21:52
Salut,
Essaie :
Ca devrait marcher.
Cdt
Essaie :
#include <stdio.h>
int main(){
int nc;
for(nc=0;(char)getchar()!='\n';nc++);
printf("%d\n",nc);
return 0;
}
Ca devrait marcher.
Cdt
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 juil. 2008 à 21:59
7 juil. 2008 à 21:59
Salut FIddy,
à quoi sert le char entre parenthèse...
à quoi sert le char entre parenthèse...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
7 juil. 2008 à 22:00
7 juil. 2008 à 22:00
getchar() retourne un int, et '\n' est un char. Il faut donc caster, pour faire du code propre. Mais bon c'est pas obligé ;)
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 juil. 2008 à 22:08
7 juil. 2008 à 22:08
J'ai essayé de cette manière et rien n'y fait je dois faire une grosse erreur de débutant et je ne vois pas laquelle,
Voici l'autre code...
Voici l'autre code...
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c, ne, nt, nc;
while (( c = getchar ()) != EOF)
{
for (nc=0; getchar() != EOF; nc++)
++nc;
for (ne=0; getchar() != EOF; ne++)
++ne;
for (nt=0; getchar() != EOF; nt++)
++nt;
}
printf("%d %d %d\n", nc, ne, nt);
return 0;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
7 juil. 2008 à 22:12
7 juil. 2008 à 22:12
Dans mon post précédent, je t'ai donné la solution.
N'utilise pas EOF, mais '\n'.
Et je vois pas pourquoi tu fais un ++nc. Tu n'as pas besoin.
N'utilise pas EOF, mais '\n'.
Et je vois pas pourquoi tu fais un ++nc. Tu n'as pas besoin.
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 juil. 2008 à 22:27
7 juil. 2008 à 22:27
Salut Fiddy,
j'ai changé mon code mais quand je compte le nombre de mot j'ai toujours 0...
Peux-tu jeter un oeil...
j'ai changé mon code mais quand je compte le nombre de mot j'ai toujours 0...
Peux-tu jeter un oeil...
#include <stdio.h>
int main(){
int c;
int nc = 0, nm = 0; // nc = nbre de caractère
// nm = nbre de mot
for(nc=0;(c=getchar()!='\n');nc++)
{
if (c == ' ')
nm++;
}
printf("%d %d\n",nc, nm);
return 0;
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
7 juil. 2008 à 23:06
7 juil. 2008 à 23:06
Re,
Oui c'est normal, car tu as mis les parenthèses au mauvais endroit, ainsi c prend la valeur de la comparaison de getchar() avec '\n' qui vaut soit 0 ou 1, donc jamais égale à la valeur ascii de ' '.
Là, ce code devrait marcher.
Oui c'est normal, car tu as mis les parenthèses au mauvais endroit, ainsi c prend la valeur de la comparaison de getchar() avec '\n' qui vaut soit 0 ou 1, donc jamais égale à la valeur ascii de ' '.
Là, ce code devrait marcher.
#include <stdio.h>
int main(){
int c;
int nc = 0, nm = 0; // nc = nbre de caractère
// nm = nbre de mot
for(nc=0;(c=getchar())!='\n';nc++){
if (c == ' ')
nm++;
}
printf("%d %d\n",nc, nm);
return 0;
}
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 juil. 2008 à 23:16
7 juil. 2008 à 23:16
ok merci ça fonctionne mais peux-tu m''expliquer pourquoi ça ne fonctionne pas avec la boucle for??? Si bien sur il y a une explication...
Encore merci pour tout
Encore merci pour tout
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
140
7 juil. 2008 à 23:35
7 juil. 2008 à 23:35
Salut,
voilà la code avec la boucle for...;
Bonne nuit...
voilà la code avec la boucle for...;
Bonne nuit...
#include <stdio.h>
int main()
{
int c;
int nc = 0, nm = 0; // nc = nbre de caractère
// nm = nbre de mot
for (nc=0;(c=getchar())!='\n';nc++)
if (c == ' ')
nm++;
printf("%d %d\n",nc, nm);
return 0;
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
7 juil. 2008 à 23:57
7 juil. 2008 à 23:57
C'est le code que j'ai mis plus haut ;), et il y a aussi l'explication.
Bonne nuit
Bonne nuit