Comment lire une chaine contient des espaces?

asstel Messages postés 54 Statut Membre -  
asstel Messages postés 54 Statut Membre -
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 139 Statut Membre 5
 
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 54 Statut Membre
 
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 139 Statut Membre 5
 
t'as trouvé ça où dans un fichier ???

Répond vite !!
0
asstel Messages postés 54 Statut Membre
 
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 139 Statut Membre 5
 
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 54 Statut Membre
 
mercii pour votre attention :)
0
asstel Messages postés 54 Statut Membre
 
pouvez vous me détailler plus?svp
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Ben tu remplaces ton scanf par la commande que je t'ai dite
0
asstel Messages postés 54 Statut Membre
 
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 11653 Statut Contributeur 1 847
 
Il suffit de rajouter :
char *p;
if ( (p=strchr(ch, '\n')) != NULL )
     *p='\0';
0
asstel Messages postés 54 Statut Membre
 
dsl :(
je suis une debutante
j'ai pas bien compris cette instruction fait quoi?
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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 54 Statut Membre
 
merciiiiiiiii à vous j'ai reglé le probleme :)
merciiii j'ai utiliser gets(ph);
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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 54 Statut Membre
 
okkkk merciiiii je vais l'utiliser immédiatement :D
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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 54 Statut Membre
 
avez vous une idée sur scanf("%49[^\n],chaine); ??
merciii :)
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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 58 Statut Membre 9
 
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 11653 Statut Contributeur 1 847
 
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 58 Statut Membre 9
 
a oui merci
0