[C] Un programme qui remplace les backspaces par \b

Un programme qui remplace les backspaces par \b [C] - C++ - Programmation

Marsh Posté le 28-10-2002 à 12:02:11    

L'exo 1-10 de K&R demande de faire une copie de l'entrée sur la sortie en remplaçant les backspaces par \b. Je vois pas comment faire un getchar() d'un backspace.


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 28-10-2002 à 12:02:11   

Reply

Marsh Posté le 28-10-2002 à 13:49:52    

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char c;
  5.     while((c=getchar()) != 'f')
  6.     {
  7.         if(c=='\t')
  8.         {
  9.                 putchar('\\');
  10.                 putchar('t');
  11.         }
  12.         else if(c=='\b')
  13.         {
  14.                 putchar('\\');
  15.                 putchar('b');
  16.         }
  17.         else if(c=='\\')
  18.         {
  19.                 putchar('\\');
  20.                 putchar('\\');
  21.         }
  22.         else putchar(c);
  23.     }
  24.     getchar();
  25.     return 0;
  26. }


Pour \t et \\ ça marche très bien, mais pour \b :heink:


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 28-10-2002 à 14:17:21    

Reply

Marsh Posté le 28-10-2002 à 14:18:55    

ben en fait pour le backspace ca dépend de l'os, il se peut qu'il soit intercepté et donc ne jamais arriver a ton programme
 
edit : le dernier getchar() il sert a quoi ?


Message édité par HappyHarry le 28-10-2002 à 14:19:21
Reply

Marsh Posté le 28-10-2002 à 14:21:59    

Cherrytree -> Ben ça marche pas !  :kaola:


Message édité par Marnie le 28-10-2002 à 14:22:37

---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 28-10-2002 à 14:23:28    

HappyHarry a écrit a écrit :

ben en fait pour le backspace ca dépend de l'os, il se peut qu'il soit intercepté et donc ne jamais arriver a ton programme
 
edit : le dernier getchar() il sert a quoi ?



C'est pour que la fenêtre 'command.com' reste ouverte, ça cause du compilateur (dev C++) qu'on utilise à la maison, c'est pour pouvoir voir l'output du programme.

Reply

Marsh Posté le 28-10-2002 à 14:25:01    

HappyHarry a écrit a écrit :

ben en fait pour le backspace ca dépend de l'os, il se peut qu'il soit intercepté et donc ne jamais arriver a ton programme



Donc sous Unix ça peut marcher ?


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 28-10-2002 à 14:26:21    

Cherrytree a écrit a écrit :

C'est pour que la fenêtre 'command.com' reste ouverte, ça cause du compilateur (dev C++) qu'on utilise à la maison, c'est pour pouvoir voir l'output du programme.




 
ben ca sert a rien

Reply

Marsh Posté le 28-10-2002 à 14:29:11    

HappyHarry a écrit a écrit :

 
 
ben ca sert a rien



Ben si. Si la fenêtre disparaît je peux pas vérifier que mon programme marche.


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 28-10-2002 à 14:33:22    

HappyHarry a écrit a écrit :

 
 
ben ca sert a rien



Si, et c'est même une astuce de la FAQ de DevC++.

Reply

Marsh Posté le 28-10-2002 à 14:33:22   

Reply

Marsh Posté le 28-10-2002 à 14:41:36    

ben j'viens de tester et ca marche tres bien sans chez moi
 
et pis de toutes facons tu vas faire un getchar() tant que le caractere lu n'est pas 'f', le dernier getchar ne sert donc a rien


Message édité par HappyHarry le 28-10-2002 à 14:43:43
Reply

Marsh Posté le 28-10-2002 à 14:48:09    

HappyHarry a écrit a écrit :

ben j'viens de tester et ca marche tres bien sans chez moi
 
et pis de toutes facons tu vas faire un getchar() tant que le caractere lu n'est pas 'f', le dernier getchar ne sert donc a rien



Tu testes dans la console ou bien directement dans l'environnement de développement ? Parce que dans EDI, quand on compile et exécute, il lance le soft, fait les traitements, puis dès que l'exécution se termine, la console est fermée (je parle bien de la console que DevC++ ouvre pour l'occasion).

Reply

Marsh Posté le 28-10-2002 à 14:51:10    

Cela dit, dans ce programme ça ne sert pas. Contre exemple :
 

Code :
  1. #include <stdio.h>
  2. int main() {
  3.     printf("Hello\n" );
  4. }


 
Là, par contre ça sert.

Reply

Marsh Posté le 28-10-2002 à 14:56:32    

Cherrytree a écrit a écrit :

Cela dit, dans ce programme ça ne sert pas. Contre exemple :
 

Code :
  1. #include <stdio.h>
  2. int main() {
  3.     printf("Hello\n" );
  4. }


 
Là, par contre ça sert.




 
la je suis d'accord, mais faut pas le mettre a toutes les sauces ;)
 
cela dit pour faire windows-style tu peux faire un system("pause" );

Reply

Marsh Posté le 28-10-2002 à 14:59:55    

HappyHarry a écrit a écrit :

 
 
la je suis d'accord, mais faut pas le mettre a toutes les sauces ;)
 
cela dit pour faire windows-style tu peux faire un system("pause" );



:jap: J'en parle à ma mie dès qu'elle revient.

Reply

Marsh Posté le 28-10-2002 à 15:05:32    

Ah ouais ! Génial.  [:yes papa !!!]


---------------
Prison d'été, prison d'hiver, prison d'automne et de printemps, bagne pour petits et grands - Prévert, Le Roi et l'Oiseau
Reply

Marsh Posté le 29-10-2002 à 01:21:09    

Du bon usage des structures:

Code :
  1. for(;;){
  2. switch(getchar()){
  3.  case '\t':
  4.  case '\b':
  5.  case '\\':
  6.    putchar('\\'); putchar(c); break;
  7.  case EOF:
  8.  case 'f':
  9.   return 0;
  10. }
  11. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 29-10-2002 à 01:42:19    

Musaran a écrit a écrit :

Du bon usage des structures:

Code :
  1. for(;;){
  2. switch(getchar()){
  3.  case '\t':
  4.  case '\b':
  5.  case '\\':
  6.    putchar('\\'); putchar(c); break;
  7.  case EOF:
  8.  case 'f':
  9.   return 0;
  10. }
  11. }





Sûr, c'est plus propre. Juste que dans le K&R, Marnie n'a pas encore abordé switch. :D [:ddr555]  [:zebra33]

Reply

Sujets relatifs:

Leave a Replay

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