【发布时间】:2014-05-30 15:55:19
【问题描述】:
我正在尝试执行 k&r 的 execize 1.10,所以这是:
/*
* Exercise 1.10
*
* Write a program to copy its input to its output, replacing each tab
* by \t, each backspace by \b, and each backslash by \\. This makes tab
* and backspaces visible in an unambiguous way.
*
*/
#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
if (c == '\t')
printf("\\t");
else if (c == '\b')
printf("\\b");
else if (c == '\\')
printf("\\\\");
else
printf("%c", c);
}
}
如果我用gcc -std=c99 1.10.c -o test 编译这段代码
如果我使用 Backspace,它不会打印 \b。为什么?以及如何尝试在 Linux 中按 Backspace 获得\b?
有人说我:
您的程序可能看不到该退格键。默认情况下,终端按行缓冲。标准输入也是如此。嗯,stdin 的缓冲就是 IDB。
【问题讨论】:
-
该练习旨在用于非常旧的 UNIX 机器。我认为从那时起终端的工作方式发生了变化。
-
您可能需要在
ansi或vt100终端仿真上执行您的代码。