question facile pour les pros du c

question facile pour les pros du c - Programmation

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]

Reply

Marsh Posté le 15-11-2001 à 16:21:38   

Reply

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 :D


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 15-11-2001 à 16:25:33    

déja, t'as \n pour aller à la ligne.

Reply

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]


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

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...

Reply

Marsh Posté le 15-11-2001 à 16:30:05    

oui je veux effectivement reecrire sur la meme ligne (je connais deja \n quand meme :p )
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 .

Reply

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 :p )
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...


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

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]

Reply

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]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

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.

Reply

Marsh Posté le 16-11-2001 à 13:23:30   

Reply

Marsh Posté le 16-11-2001 à 14:17:12    

Salut,
 
Cela fonctionne aussi très bien :
 
printf("%-79s\r",chaine);
 
A+

Reply

Sujets relatifs:

Leave a Replay

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