2013-02-18 86 views
0

我现在坐在K & R C语言编程。我有1节练习1-8。
锻炼它自我。C语言K&R练习1-8

编写一个程序,用三个字符的顺序>,退格键, - ,女巫打印为→,每个选项卡替换每个选项卡,每个退格键用类似的←。这使得制表符和退格符可见。

正如我在这里理解的那样,练习要求我在制表符和退格符中指向箭头。但我不能得到如何剪辑2个字符用C
这里一起计划它的自我

#include <stdio.h> 
main() 
{ 

int c; 

while ((c=getchar()) !=EOF) 
{ 
    if (c == '\t') 
     printf(">->->\b"); 
    if (c == '\b') 
     printf("<-<-<-\b"); 
    if (c !='\t') 
     if (c !='\b') 
       putchar(c); 

} 

    getchar(); 
} 

那么,是我的错你能帮助我在这里?

+0

我认为三者的退格键的目的是清除制表符,但是我不太清楚的是,退格键可以删除其他退格。我发现这里的问题陈述含糊不清。此外,我无法在K&R第2版中找到完全相同的问题。 – 2013-02-19 00:16:57

+0

@Alexey Frunze:是的,我在程序中犯了一个小错误,我应该做'> \ b-'但是我的编译器不支持那种代码,它只显示' - '。 K&R的第二版没有正确答案 – AlexGreat 2013-02-19 00:27:36

回答

1

所需的顺序

>\b- 

注意,这可能不会对现代终端仿真器正常工作,因为大多数不支持叠印的字符。最初的想法是模仿打印一个角色的老式打字机技术,将头部抬起一个角色,然后在另一个角色上面打另一个角色。

如果终端支持UTF-8,则可以替换为 '→' 的Unicode字形(U + 2192向右箭头),这是在UTF-8编码为

\xe2\x86\x92 

类似地, '←'( U + 2190)是

\xe2\x86\x90 
+0

> \ b-没有工作,只显示 - – AlexGreat 2013-02-19 00:06:09

+0

不,它不支持UTF-8它显示奇怪的符号 – AlexGreat 2013-02-19 00:06:43

+0

@ user2023937:就像我说的,如果你使用的是现代终端模拟器,它可能不会工作。如果您使用的终端模拟器不支持UTF-8,那么您很不幸运。 (如果你在Windows上,请尝试MinTTY;在Linux上,gnome-terminal或Konsole应该可以工作;在OS X上,系统提供的Terminal.app支持Unicode)。 – nneonneo 2013-02-19 00:08:15