我正試圖編寫一個簡短的程序,將每個單詞放在一個新行中。新行可以通過製表符,空格或輸入進行確認。程序結束時將「#」放入控制檯。我遇到這樣的問題,當我將「輸入」到控制檯時,它會在同一行中寫入下一個字符。爲什麼printf(「 n」)不能進入下一行?
第二個想法是將所有這些放在一張表中,這樣我就可以將格式化文本放在一起。我也無法弄清楚這一點。
#include<stdio.h>
#include <conio.h>
#define STOP '#'
int main()
{
char ch;
while ((ch = (_getch())) != STOP) {
switch (ch) {
case '\n':
printf("\n");
break;
case '\t':
printf("\n");
break;
case ' ':
printf("\n");
break;
default:
putchar(ch);
}
}
printf("\nEND");
_getch();
return 0;
}
當您提供「enter」時,您是否檢查'_getch()'返回的內容? – Martin
在Windows中,爲新行發出「\ r \ n」。 –
@JohnnyMopp無論OS行結束符是否爲單個字符,C標準都需要'printf(「\ n」)'到DTRT。 (具體來說,在文本模式下打開的FILE對象的輸入和輸出都需要在'\ n'和OS的行結束符之間進行轉換。)'_getch'不是C標準的一部分,因此它不受此影響規則。 – zwol