Programmer une boucle de saisie chaine de caractère.
Bonjour à tous!
Voila, je débute en C, et là je bloque sur un petit truc qui va sûrement vous sembler minable. Mais bon je me lance et tanpis pour ma fierté :roll:
Vu qu'en C il n'y a aucun type pour les chaînes de caractères, j'ai bien compris qu'il faille passer par un tableau de char.
Ca c'est ok, mais je n'arrive pas à trouver une solution pour que le tableau s'adapte à la taille du mot que l'utilisateur va entrer.
par exple, pour une boucle de saisie:
Code:
1 2 3 4
| for(i=1;i<nb_lettres;i++)
{
mot[i]=getch();
} |
le problème c'est que l'on doit connaitre le nombre de lettres du mot que l'utilisateur va entrer.
Je voudrais savoir si il existe un moyen de stopper la boucle si l'utilisateur appui sur "Entrée" comme chacun le ferait à la fin du mot.
J'éspère que je ne suis pas trop confu ds mes explications et que je n'ai pas trop blasphémé :wink:
merci à vous !
Spike
Re: Programmer une boucle de saisie chaine de caractère.
Citation:
Envoyé par Spike Spiegel
Vu qu'en C il n'y a aucun type pour les chaînes de caractères, j'ai bien compris qu'il faille passer par un tableau de char.
Ca c'est ok, mais je n'arrive pas à trouver une solution pour que le tableau s'adapte à la taille du mot que l'utilisateur va entrer.
fgets() permet la saisie d'une ligne limitée en taille. Il est ensuite possible de savoir si la ligne est tronquée ou non (présence ou non du '\n'). Si la ligne est tronquée, on peut agrandir le tableau, rappeler fgets(), ceci autant de fois que nécessaire pour obtenir le '\n'...
L'ago n'est pas trivial, mais il constitue un bon exercice d'allocation / reallocation. On optimise en doublant la taille à chaque tour (en demarrant de 8 ou 16, par exemple)
http://emmanuel-delahaye.developpez....tes.htm#saisie
http://emmanuel-delahaye.developpez....s.htm#fichiers
http://emmanuel-delahaye.developpez....tes.htm#malloc
http://emmanuel-delahaye.developpez....es.htm#realloc