question facile pour les pros du c - Programmation
Marsh Posté le 15-11-2001 à 16:23:21
GurneyHalleck a écrit a écrit : J aimerais savoir comment faire pour effacer une ligne complete de texte sur stdout. En effet, j aimerais afficher des chaines de caracteres les unes apres les autres avec printf. Le probleme est que je ne connais que la commande \r pour revenir au debut de la ligne et que par consequent si la nouvelle chaine a afficher est plus courte que la precedente alors ca devient illisible (puisque l ancienne chaine n est pas efface jusqu au bout). J espere avoir ete assez clair et j attends vos reponses avec impatience. Merci!! |
Je sais pas si j'ai bien compris mais... man termcap
Marsh Posté le 15-11-2001 à 16:27:23
El_Gringo a écrit a écrit : déja, t'as \n pour aller à la ligne. |
mais je crois qu'il veut reecrire sur la meme ligne a chaque fois.. non ? bon ok j'ai rien compris...
[edtdd]--Message édité par Suri--[/edtdd]
Marsh Posté le 15-11-2001 à 16:29:09
En écrivant d'abord " " comme avec le bon vieux QBasic ? On efface (pas trop longue la chaîne quand même) puis réécrit dessus...
Marsh Posté le 15-11-2001 à 16:30:05
oui je veux effectivement reecrire sur la meme ligne (je connais deja \n quand meme )
merci suri mais je ne crois pas que termcap me soit utile! (ca m a l air trop complexe pour mon niveau)
Certains m ont parle de \0 .
Marsh Posté le 15-11-2001 à 16:57:56
GurneyHalleck a écrit a écrit : oui je veux effectivement reecrire sur la meme ligne (je connais deja \n quand meme ) merci suri mais je ne crois pas que termcap me soit utile! (ca m a l air trop complexe pour mon niveau) Certains m ont parle de \0 . |
ben les termcaps c pas que c vraiment dur... c juste que c la grosse merde si t'as pas pensé ton progr avec, des le debut...
et c sur qu'un simple printf devient plus compliqué des que les termcaps interviennent...
Marsh Posté le 15-11-2001 à 17:21:39
ben tu fais des backspace ! \b
('fin moi c comme ça que je fais pour faire des compteurs d'avancement...)
[edtdd]--Message édité par minusplus--[/edtdd]
Marsh Posté le 15-11-2001 à 20:16:11
Le plus simple:
Tu definis un buffer ligne, statique, de 40 ou 80 caracteres, (ou tu adaptes a ton terminal), entierement rempli de blancs.
Tu l' affiches avant tout nouvel affichage de ligne, il effacera ta ligne precedente.
A+,
[edtdd]--Message édité par gilou--[/edtdd]
Marsh Posté le 16-11-2001 à 13:23:30
Merci a tous pour vos reponses.
Gilou et Carbon j ai opte pour votre solution qui fonctionne tres bien.
Marsh Posté le 16-11-2001 à 14:17:12
Salut,
Cela fonctionne aussi très bien :
printf("%-79s\r",chaine);
A+
Marsh Posté le 15-11-2001 à 16:21:38
J aimerais savoir comment faire pour effacer une ligne complete de texte sur stdout.
En effet, j aimerais afficher des chaines de caracteres les unes apres les autres avec printf. Le probleme est que je ne connais que la commande \r pour revenir au debut de la ligne et que par consequent si la nouvelle chaine a afficher est plus courte que la precedente alors ca devient illisible (puisque l ancienne chaine n est pas efface jusqu au bout).
J espere avoir ete assez clair et j attends vos reponses avec impatience. Merci!!
[edtdd]--Message édité par GurneyHalleck--[/edtdd]