2

我在做 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;
        }

    }

}

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

难道我做错了什么?

4

4 回答 4

5

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

于 2010-08-12T07:14:37.100 回答
2

您应该打印反斜杠及其转义。

目前您只是打印反斜杠 - 在这里您要转义第二个反斜杠,否则会转义结束双引号:

printf("\\");
于 2010-08-12T07:14:08.330 回答
2

采用printf("\\\\")

于 2010-08-12T07:14:16.677 回答
2

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

于 2010-08-12T07:14:57.527 回答