为什么这个C程序不会获取转义反斜杠?

ale*_*lex 2 c kernighan-and-ritchie

我正在做K&R的练习1-10

编写程序将其输入复制到其输出,替换每个选项卡\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;
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它拒绝接触反斜杠.例如,程序输出时输入的字符串Hello how\ are you?就是Hello\thow\ are you?这意味着它转换了选项卡OK,但不是反斜杠.

难道我做错了什么?

ada*_*amk 5

你可能想要printf("\\\\");,而不仅仅是printf("\\");.

  • 这不是家庭作业的解决方案.这是我们可以提供帮助的一个小细节,因为OP完成了大部分工作.除非作业是"为什么这个C程序不会获得逃脱的反斜杠?" 在这种情况下,我担心未来的IT行业:-)除此之外,HW标签是由其他人添加的. (6认同)