bonjour tout le monde voila j'ecris un programme pour extraire les mots d'un texte entré au clavier sauf que j'obtiens pas trop ce que je veux
voici le code: en fichier attaché
code.txt
bonjour tout le monde voila j'ecris un programme pour extraire les mots d'un texte entré au clavier sauf que j'obtiens pas trop ce que je veux
voici le code: en fichier attaché
code.txt
Déjà:
Jamais sur un flux entrant, que sur un flux sortant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part fflush(stdin);
Tu n'as pas de vérification côté débordement de tableau: si je tape un mot trop grand, ton programme va planter...
scanf: Déconseillé, utiliser fgets pour récupérer une ligne. Car scanf récupère un seul mot donc si tu tapes "Bonjour comment", scanf récupère seulement "Bonjour"...
C'est pas la peine de mettre un fflush partout, mettre un '\n' comme tu le fais suffit généralement...
C'est 0 pour un retour normal ou EXIT_SUCCESS, c'est encore mieux (include stdlib.h)
Code : Sélectionner tout - Visualiser dans une fenêtre à part return 1;
Jc
merci j'ai fait les changements mais ça marche toujours pas
Parfait, on peut les voir ces changements ?Envoyé par krachik
"strtok" est fait pour.pour extraire les mots d'un texte
Attention toutefois à faire une sauvegarde de la chaine originale si necessaire car strtok la modifie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 char s[101]; printf("ligne (100 max) : "); fflush(stdout); fgets(s,101,stdin); char *souschaine=strtok(s," "); printf("%s\n",souschaine); while((souschaine=strtok(NULL," "))!=NULL){ printf("%s\n",souschaine); }
Merci pour les reponse j'ai un truc assez simple et ça marche tres fort
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char texte[120]; char mot[26]; int i; printf("Tapez le texte :"); gets(texte); for (i=0;i<strlen(texte);i++){ scanf("%s",mot); printf(" %s ",mot); } return 0; }
Ca c'est du code bien buge. Faire un truc aussi mauvais en si peu de ligne faut etre fort quand meme.Envoyé par krachik
voila c'est plutot ça j'ai oublié le "f" du scanf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char texte[120]; char mot[26]; int i; printf("Tapez le texte :"); gets(texte); for (i=0;i<strlen(texte);i++){ fscanf(test,"%s",mot); printf(" %s ",mot); } return 0; }
Bah ca change rien au fait que ce code est bien crade, et encore pire celui la ne compile meme pas. En plus il est faux (enfin l'autre aussi l'etait).Envoyé par krachik
Non il faut "fgets" qui est sûre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gets(texte);
Non ça ne sert à rien de regarder chaque caractère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part i<strlen(texte)
C'est "sscanf" qui permet de lire une chaine formatée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part fscanf(test,"%s",mot);
"fscanf" c'est pour la lecture d'un flux formaté.
Partager