【发布时间】:2018-11-01 11:57:21
【问题描述】:
我正在尝试将符号“\”保存在一个字符中,然后打印它,但我不能。
有什么好主意吗?
char direction = '\';
printf("%c", direction);
【问题讨论】:
标签: c
我正在尝试将符号“\”保存在一个字符中,然后打印它,但我不能。
有什么好主意吗?
char direction = '\';
printf("%c", direction);
【问题讨论】:
标签: c
逃脱它。
char direction = '\\';
【讨论】:
你可以这样直接打印:
printf("\\");
用于打印任何特殊字符。
\\ - Backslash
\' - Single Quotation Mark
\" - Double Quotation Mark
\? - Question Mark
\n - New line
\r - Carriage Return
\t - Horizontal Tab
\b - Backspace
\f - Formfeed
\a - Bell (beep sound)
\v - Vertical Tab
参考:https://stackoverflow.com/a/11792217/5747242
C11 §6.4.4.4 Character constants 和 §5.2.2 Character display semantics 也有帮助。
【讨论】:
\? 是可选的,? 需要转义三元组。
'\a') 从一开始就是标准 C,@Bathsheba。它与\v 争夺“最不有用的转义序列”奖杯。
\? 太确定了吗?从现在开始,我将努力记住 \a 是标准的。
\? 之所以有目的是因为三元组——大多数人和许多编译器都忽略了它。例如,如果你写printf("What??!\n");,如果你的编译器注意到三元组,你应该在输出上看到What|——如果没有,你应该看到What??!。 GCC 要求-trigraphs 关注它们。标准说它应该一直发生。我相信 C++ 最终说“不再有三元组”。为了得到我想要的序列,在标准 C(带三元组)中,我会写 printf("What\?\?!\n"); — 尽管只有两个 \? 序列中的一个就足够了。
你必须使用'\\'。反斜杠是转义字符。
【讨论】: