Bonjour,
Je veux saisir une chaine de caractere qui contient des espaces, mais avec scanf, je rencontre des problèmes.
Comment resoudre ce probleme ?
Et merci d'avance
Bonjour,
Je veux saisir une chaine de caractere qui contient des espaces, mais avec scanf, je rencontre des problèmes.
Comment resoudre ce probleme ?
Et merci d'avance
Salut,
Pour effectuer des saisies, il est vivement conseillé d'utiliser fgets
http://c.developpez.com/faq/c/?page=...EEN_gets_fgets
c'est normal puisque scanf() permet de lire une chaine jusqu'à la rencontre du premier caractère d'espacement (entrer,espace,tabulation...),donc je ne peux que te conseiller d'utiliser un gets sa marche trés bien.
Non, surtout pas gets() mais bien fgets() : Pourquoi faut-il utiliser fgets() et non gets() ?Envoyé par ssmario2
Salut,
Entre autres une solution :
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
17
18
19
20
21
22
23
24
25
26
27
28
29 int fget_line(char *s, const size_t nb, FILE * fd) { int err = 0 , c1; char * c = 0 ; if (s == NULL || nb == 0 || fd == NULL) { err = 2; } else { if( fgets (s, nb, fd) != NULL) { c = strchr (s, '\n'); if (c != NULL ) { *c = '\0'; } else if( c == NULL && ! feof(fd) ) { while ((c1 = fgetc (fd)) != '\n' && c1 != EOF) {} ; err = 1; } } else { err = EOF; } } return err; }
Oui fgets(); est fortement conseillé à la place de scanf(); qui est assez désastreux![]()
Partager