KR - 可视化退格
KR - visualize backspace
我遇到了这个 KR 练习 1-10:
Write a program to copy its input to its output, replace each tab by \t, each backspace by \b, and each backslash by \ .
这是一个非常简单的解决方案:
#include <stdio.h>
int main()
{
int c;
const char TAB = '\t';
const char BACKSPACE = '\b';
const char BACKSLASH = '\';
while( EOF != ( c = getchar() ) )
{
if( TAB == c )
{
printf( "\t" );
}
else if( BACKSPACE == c )
{
printf( "\b" );
}
else if( BACKSLASH == c )
{
printf( "\\" );
}
else
{
putchar( c );
}
}
return 0;
}
我发现它可以可视化 Tab 和 \
(反斜杠)但不能可视化 Backspace。看起来 Backspaces 没有被控制台记住?我在 Ubuntu 14.04.
This 似乎是一个类似的问题,但不太确定是否相同。
我假设您 运行 您的程序在终端中,然后键入一些输入。
终端通常处于熟化模式,退格键会立即被解释为请擦除前一个字符。 getchar()
永远不会 return 退格。
如果你想测试你的程序是否正确处理退格键,管道它们在标准输入上,这避免了使用带有相关烹饪的终端:
$ printf 'foo\bbar\n' | ./a.out
foo\bbar
我遇到了这个 KR 练习 1-10:
Write a program to copy its input to its output, replace each tab by \t, each backspace by \b, and each backslash by \ .
这是一个非常简单的解决方案:
#include <stdio.h>
int main()
{
int c;
const char TAB = '\t';
const char BACKSPACE = '\b';
const char BACKSLASH = '\';
while( EOF != ( c = getchar() ) )
{
if( TAB == c )
{
printf( "\t" );
}
else if( BACKSPACE == c )
{
printf( "\b" );
}
else if( BACKSLASH == c )
{
printf( "\\" );
}
else
{
putchar( c );
}
}
return 0;
}
我发现它可以可视化 Tab 和 \
(反斜杠)但不能可视化 Backspace。看起来 Backspaces 没有被控制台记住?我在 Ubuntu 14.04.
This 似乎是一个类似的问题,但不太确定是否相同。
我假设您 运行 您的程序在终端中,然后键入一些输入。
终端通常处于熟化模式,退格键会立即被解释为请擦除前一个字符。 getchar()
永远不会 return 退格。
如果你想测试你的程序是否正确处理退格键,管道它们在标准输入上,这避免了使用带有相关烹饪的终端:
$ printf 'foo\bbar\n' | ./a.out
foo\bbar