#include <stdio.h>
int main() {
int c;
while ((c = getchar()) != EOF) {
if (c == '\t')
printf("\\t");
else if (c == '\b')
printf("\\b");
else if (c == '\\')
printf("\\\\");
else
putchar(c);
}
return 0;
}
在这种情况下的C编程,任何人都可以解释这一点吗?
hi how are you\doing
输入我得到一个输出
hi\thow\tare\tyou\\doing
#include <stdio.h>
int main() {
int c;
while ((c = getchar()) != EOF) {
if (c == '\t') {
c = '\b';
printf("\\t");
}
if (c == '\b') {
c = '\b';
printf("\\b");
}
if (c == '\\') {
c = '\b';
printf("\\\\");
}
putchar(c);
}
return 0;
}
当我运行此程序的输入
hi how are you\doing
(大空间是制表符)
我得到这个输出
hi\t\how\t\are\t\you\doing
代码:
#include <stdio.h>
int main() {
int c;
c = '\b';
putchar(c);
return 0;
}
在运行此,我 什么都没得到。没有输出。回到shell提示符。
更确切地说,在第一个程序我得到我想要的输出,但在第二个方案,我得到了反斜线后每\t
但不是\
后,我希望\\\
是输出考虑如何\t
成为\t\
,是'\ b'造成的吗?如果是,它是如何工作的?但如果是这样,为什么第三个程序中不会发生同样的情况?
对rasbian默认的gcc编译器和mingw的msys-gcc软件包进行了修改。
''\ b''是“退格”。所以你什么也得不到。 –
是的,但在第一次输出的情况下,我在“\ t”后面得到一个“\”,当它打印出“\\”时,它只是打印“\” – user6723034
''\\''是一个*转义* 。通常,单个的'''是*转义序列*的一部分,例如''\ b''。双斜线击败逃跑,给出一个单一的斜线作为实际输出。与'printf'中的'%''类似,通常表示格式规范。如果你真的想要一个百分号,你必须把'“%%”'打败预期的序列。 –