Questo programma copia l'input in uscita, sostituendo TAB (\t
) per \t
backspace (\b
) entro il \b
. Ma qui nel mio codice non riesco a leggere il carattere di input quando inserisco backspace, non sostituendolo come una tabulazione funziona.Comprendere il comportamento backspace ( b) in C
compilazione con GCC in Linux:
#include<stdio.h>
int main(void)
{
int c=0;
while((c=getchar())!=EOF){
if(c=='\t'){
printf("\\t");
if(c=='\b')
printf("\\b");
}
else
putchar(c);
}
return 0;
}
Supponiamo che se digito Vinay (scheda) hunachyal
Output:vinay\thunachyal
Se digito Vinay (e 1 backspace)
Output:vina
Così la mia domanda è perché vina\b
non sta stampando in questo caso?
È possibile rilevare \b
e stampare \b
? se non che cosa è la ragione
Note:
ho bisogno in fase di esecuzione backspace ingresso tempo non fornire file separato con \ b
C'è un modo per evitare il backspace mangiato dalla shell senza generare file separato, ho bisogno in fase di esecuzione del tasto backspace –
anche il mio codice funziona anche se io echo 'vinay \ thunachyal \ b' | ./a.out, ma la mia query è un modo per rilevare backspace in fase di esecuzione del programma mentre la scheda sta funzionando come il backspace, correggimi se sbaglio. –
@vinayhunachyal Sì, il tuo programma lo sta facendo. Il problema qui è semplicemente come si ottiene il backspace per il programma. Usando 'echo', come sopra sembra un approccio semplice. – trojanfoe