[C] Lire proprement une chaîne de caractères au clavier

Lire proprement une chaîne de caractères au clavier [C] - C - Programmation

Marsh Posté le 21-01-2004 à 12:21:13    

Bon alors voilà. Je dois lire une chaîne de caractères (un prénom) au clavier. Je ne sais pas à priori la taille de la chaîne, donc je fais ceci :
 

Code :
  1. char prenom[20];
  2. scanf("%s", prenom);


 
Et ça marche. Le problème est que si l'utilisateur entre plus de 20 caractères, ça plante lamentablement. Ma question est donc : Est-ce qu'il existe une façon propre de lire une chaîne (par exemple en ne conservant que les 20 premiers caractères saisis) ?
 
Merci :)
 
PS : Je sais que cette question semble stupide, mais sur tous les cours de C que je trouve sur le net, on utilise cette méthode pour lire une chaîne :/
 
PS2 : J'ai aussi pensé à déclarer

Code :
  1. char prenom[500]

mais ça ne fait que repousser le problème.

Reply

Marsh Posté le 21-01-2004 à 12:21:13   

Reply

Marsh Posté le 21-01-2004 à 12:22:39    

avec fgets
 
ou bien, une petite recherche sur le forum, on (j'ai) a donné plusieurs fois le code d'une fonction getline qui lit autant de caractère que nécessaire et fait l'allocation comme il faut

Reply

Marsh Posté le 21-01-2004 à 12:29:28    

Merci beaucoup, c'est exactement ça :)
Je vais quand même chercher l'autre fonction, au cas où.

Reply

Marsh Posté le 21-01-2004 à 14:28:47    

c'est quoi ton système ?

Reply

Marsh Posté le 21-01-2004 à 21:37:05    

Faut que ça tourne sous Windows et sous Linux.
fgets() ça me va :)

Reply

Marsh Posté le 04-03-2004 à 10:54:11    

ya une grosse différence entre fgets et scanf ?

Reply

Marsh Posté le 04-03-2004 à 11:53:58    

EpoK a écrit :

ya une grosse différence entre fgets et scanf ?

fgets est mieux (enfin y a moins de gymanique à faire pour la même chose)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed