2010-08-12 57 views
2

我做ķ&的r练习1-10为什么这个C程序不能逃脱反斜杠?

写一个程序,其输入复制到其输出,通过\t替换每个选项卡,每个退格由\b\\每个反斜杠。这使得制表符和退格符以明确的方式可见。

我想出了这个...

#include <stdio.h> 

int main() { 

    int c; 
    printf("\n"); // For readability 

    while ((c = getchar()) != EOF) { 

     switch (c) { 
      case '\t': 
       printf("\\t"); 
       break; 
      case '\b': 
       printf("\\b"); 
      case '\\': 
       printf("\\"); 
       break; 
      default: 
       printf("%c", c); 
       break; 
     } 

    } 

} 

出于某种原因,它拒绝触摸反斜杠。例如,从程序输入字符串(例如Hello how\ are you?)时的输出是Hello\thow\ are you?,这意味着它将制表符转换为OK,但不是反斜杠。

我做错了什么?

+4

我们是否至少可以提出问首先是否是功课?有很多人被告知他们的问题只是回答自己的家庭作业是自我教育。如果我们确定但我不是没有确认的话,我都会为它们加上标签。而且,如果有人在说谎,那就太难了!因为任何不监督这些网站进行剽窃的教育工作者都不应该接受教育,他们在交付工作时会失败。 – paxdiablo 2010-08-12 07:20:48

+0

每位教育工作者在每次设置标记之前都必须检查互联网上的每个问题。我在云蠢蠢的地方醒来了吗?也许他们只是将每个学生答案的每一行粘贴到谷歌。这可能会起作用。 – 2010-08-12 08:17:42

回答

5

你可能想printf("\\\\");,而不是只是printf("\\");

+1

提示:不要发布作业的解决方案 – 2010-08-12 07:15:22

+1

@Aaron:我只希望一个15K代表SO用户知道把问题标记为家庭作业,如果是这样的话。 – adamk 2010-08-12 07:18:04

+6

这不是一个家庭作业的解决方案。这是我们可以帮助的一个小细节,因为OP已经完成了大部分工作。除非作业是“为什么这个C程序不能逃脱反斜杠?”在这种情况下,我担心未来IT行业:-)最重要的是,HW标签是由其他人添加的。 – paxdiablo 2010-08-12 07:18:11

2

您应该打印反斜杠其逃生。

目前你只是打印反斜杠 - 在这里你逃跑,否则将难逃关闭双引号第二反斜线:

printf("\\"); 
2

使用printf("\\\\")

+0

提示:不要发布作业的解决方案 – 2010-08-12 07:15:56

+0

在这种情况下,即使它是作业也行 - 他粘贴了工作代码,并表明他努力自己解决问题。 – zvrba 2010-08-12 09:26:12

2

C编译器在源代码中找到\\时会做什么?

+3

提示:不要模糊的非作业:-) {只是一个微妙的刺拳,请不要冒犯}。 – paxdiablo 2010-08-12 07:26:58