Comment lire une chaine contient des espaces?

Fermé
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - 21 mars 2014 à 21:54
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - 29 mars 2014 à 00:01
Bonjour,

svp
j'ai utilisé printf("%s") mais elle a pris que le premier mot avant l'espace
svp aider moi :)


A voir également:

10 réponses

SuperHelpeur Messages postés 122 Date d'inscription dimanche 7 avril 2013 Statut Membre Dernière intervention 22 mars 2014 5
21 mars 2014 à 21:57
Bonjour,

Tout d'abord j'aimerais savoir qu'est ce que tu entends par le mot " chaine " . est-ce que tu parles d'un fichier que tu as ouvert puis tu as eu des trucs bizarres ???
Répond moi vite !!!
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
21 mars 2014 à 22:00
nn juste lire une phrase donner par l'utilisateur:
#include <stdio.h>
#include <stdlib.h>

int main()
{
char ph[50];

scanf("%s",ph);
printf("%s",ph);
return 0;
}
0
SuperHelpeur Messages postés 122 Date d'inscription dimanche 7 avril 2013 Statut Membre Dernière intervention 22 mars 2014 5
21 mars 2014 à 22:02
t'as trouvé ça où dans un fichier ???

Répond vite !!
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
21 mars 2014 à 22:03
je suis entrain d'ecrire un pgm
parmi les instructions c'est lire le nom d'un livre el le met dans un fichier mais le probleme c'est: printf(%s) recupère que le premier mot avant l'espace
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SuperHelpeur Messages postés 122 Date d'inscription dimanche 7 avril 2013 Statut Membre Dernière intervention 22 mars 2014 5
21 mars 2014 à 22:05
Mince si c'est une programmation je n'en ai jamais faite je peux pas t'aider plus désolé :(
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
21 mars 2014 à 22:07
mercii pour votre attention :)
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
22 mars 2014 à 12:47
pouvez vous me détailler plus?svp
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
22 mars 2014 à 19:18
Ben tu remplaces ton scanf par la commande que je t'ai dite
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
22 mars 2014 à 20:23
ouiii j'ai compris ça
j'ai pas compri :
Attention, cela stockera le '\n' s'il y a la place. Mais tu peux l'enlever en le remplaçant par '\0'.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
22 mars 2014 à 21:39
Il suffit de rajouter :
char *p;
if ( (p=strchr(ch, '\n')) != NULL )
     *p='\0';
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
26 mars 2014 à 21:44
dsl :(
je suis une debutante
j'ai pas bien compris cette instruction fait quoi?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
26 mars 2014 à 23:20
Ben, c'est ce que j'ai dit plus haut :
cela stockera le '\n' s'il y a la place. Mais tu peux l'enlever en le remplaçant par '\0'.
strchr(ch,'\n') te renvoie un pointeur sur le retour chariot s'il existe, sinon strchr() renvoie NULL.
Si strchr() est différent de NULL (donc s'il y a un retour chariot), on le remplace par '\0' (fin de chaîne de caractères).
Si tu débutes vraiment, je te conseille un tuto : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c

Cdlt,
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
28 mars 2014 à 23:35
merciiiiiiiii à vous j'ai reglé le probleme :)
merciiii j'ai utiliser gets(ph);
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 mars 2014 à 23:43
Je te conseille fortement de ne pas utiliser gets() mais fgets(). De plus, si tu utilises gets(), tu auras le même problème. Il faudra supprimer le '\n' résiduel dans ch.
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
29 mars 2014 à 00:01
okkkk merciiiii je vais l'utiliser immédiatement :D
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
21 mars 2014 à 22:53
Bonjour,

Le mieux est d'utiliser fgets(ph, sizeof ph, stdin);
Attention, cela stockera le '\n' s'il y a la place. Mais tu peux l'enlever en le remplaçant par '\0'.

Cdlt,
-1
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
Modifié par asstel le 28/03/2014 à 23:34
avez vous une idée sur scanf("%49[^\n],chaine); ??
merciii :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 mars 2014 à 23:45
Oui. Cela résoudra ton problème. Cela permettra à l'utilisateur de rentrer une chaîne de 49 caractères avec des espaces. Mais, cela fait partie des fonctions avancées, et pour bien faire il faudrait également tester la valeur de retour de scanf(). Bref, fgets() est beaucoup plus simple d'utilisation et est généralement conseillé.
0
karara20 Messages postés 32 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 13 juillet 2014 9
Modifié par karara20 le 28/03/2014 à 23:19
bonjour ,
tu doit replace
scanf
par
gets(ph)
parce que
scanf
ne lie pas les espace;









https://tutodev1.blogspot.com/
-1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 28/03/2014 à 23:42
N'importe quoi !
gets() est à bannir. On utilise fgets() à la place...
De plus scanf() peut lire les espaces si on l'utilise correctement => scanf("%[^\n]", ch);
0
karara20 Messages postés 32 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 13 juillet 2014 9
28 mars 2014 à 23:47
a oui merci
0