#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'中的'%''類似,通常表示格式規範。如果你真的想要一個百分號,你必須把'「%%」'打敗預期的序列。 –