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
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
A voir également:
- Comment lire une chaine contient des espaces?
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire epub - Guide
- Espaces insécables - Guide
- Chaine tnt gratuite sur mobile - Guide
- Lire fichier bin - Guide
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
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 !!!
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 !!!
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
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;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ph[50];
scanf("%s",ph);
printf("%s",ph);
return 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
21 mars 2014 à 22:02
t'as trouvé ça où dans un fichier ???
Répond vite !!
Répond vite !!
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
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
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
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
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é :(
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
21 mars 2014 à 22:07
mercii pour votre attention :)
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
22 mars 2014 à 12:47
pouvez vous me détailler plus?svp
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
22 mars 2014 à 19:18
Ben tu remplaces ton scanf par la commande que je t'ai dite
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
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'.
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'.
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
22 mars 2014 à 21:39
Il suffit de rajouter :
char *p; if ( (p=strchr(ch, '\n')) != NULL ) *p='\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
26 mars 2014 à 21:44
dsl :(
je suis une debutante
j'ai pas bien compris cette instruction fait quoi?
je suis une debutante
j'ai pas bien compris cette instruction fait quoi?
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
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,
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,
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
28 mars 2014 à 23:35
merciiiiiiiii à vous j'ai reglé le probleme :)
merciiii j'ai utiliser gets(ph);
merciiii j'ai utiliser gets(ph);
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
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.
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
29 mars 2014 à 00:01
okkkk merciiiii je vais l'utiliser immédiatement :D
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
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,
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,
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
Modifié par asstel le 28/03/2014 à 23:34
avez vous une idée sur scanf("%49[^\n],chaine); ??
merciii :)
merciii :)
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
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é.
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
Modifié par karara20 le 28/03/2014 à 23:19
bonjour ,
tu doit replace
https://tutodev1.blogspot.com/
tu doit replace
scanfpar
gets(ph)parce que
scanfne lie pas les espace;
https://tutodev1.blogspot.com/
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
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);
gets() est à bannir. On utilise fgets() à la place...
De plus scanf() peut lire les espaces si on l'utilise correctement => scanf("%[^\n]", ch);
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
28 mars 2014 à 23:47
a oui merci