Ten program kopiuje dane wejściowe na swoje wyjście, zastępując TAB (\t
) przez \t
backspace (\b
) przez \b
. Ale tutaj w moim kodzie nie jestem w stanie odczytać wprowadzanego znaku, gdy wchodzę do backspace, którego nie zastępuję, ponieważ działa zakładka.Zrozumienie zachowania Backspace ( b) w C
Kompilacja z GCC w systemie 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;
}
Załóżmy, że jeśli wpisuję vinay (tab) hunachyal
Output:vinay\thunachyal
Gdybym wpisać vinay (i 1 Backspace)
Output:vina
Tak moje pytanie brzmi, dlaczego vina\b
nie drukuje w tym przypadku?
Czy można wykryć \b
i wydrukować \b
? jeśli nie co jest powodem
Note:
muszę w czasie wykonywania Backspace wejściowego nie zapewniając osobny plik mający \ b
Czy istnieje sposób na uniknięcie backspace spożywanego przez powłokę bez generowania osobnego pliku, potrzebuję w czasie wykonywania klawisza Backspace –
nawet mój kod działa również Jeśli echo "vinay \ thunachyal \ b" | ./a.out, ale moim zapytaniem jest jakikolwiek sposób na wykrycie backspace w czasie wykonywania programu, ponieważ zakładka działa @runtime podobnie jak w backspace, popraw mnie, jeśli jestem zły. –
@vinayhunachyal Tak, twój program to robi. Kwestią tutaj jest po prostu, jak uzyskać backspace do programu. Użycie 'echo', jak wyżej, wydaje się proste. – trojanfoe