无法在switch语句中打印双反斜线

问题描述 投票:0回答:1

我正在编写一个C程序,如果用户输入反斜杠,转义序列(\\)将打印在控制台上。但是,当我运行代码时,尽管我在fprintf语句中包括了4个反斜杠,但仅打印了一个反斜杠。下面是我的C代码:

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    int character;
    while((character = getchar()) != EOF) {
        if (isprint(character)) {
            putchar(character);
        }
        else {
            switch (character){
                case '\\':
                    printf("\\\\\n");
                    break;
            }
        }
    }

    return(0);
}
c switch-statement
1个回答
0
投票

您可以尝试将isprint()呼叫替换为isalnum()。这将提供您期望的结果,即在输入单个\时打印两个\。

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    int character;
    while((character = getchar()) != EOF) {
        if (isalnum(character)) {
            putchar(character);
        }
        else {
            switch (character){
                case '\\':
                    printf("\\\\\n");
                    break;
            }
        }
    }

    return(0);
}

输出:

test input \
test input \\
© www.soinside.com 2019 - 2024. All rights reserved.