私は新しい行に各単語を入れる短いプログラムを書こうとしています。新しい行は、tabulator、spaceまたはenterで確認できます。プログラムの最後はコンソールに "#"を入れています。私はコンソールに "enter"を置くと、次の文字を同じ行に書き込むという問題があります。なぜprintf( " n")が次の行に移動しないのですか?
2つ目のアイデアは、すべてをテーブルに作成することです。そのため、書式設定されたテキストをすべてまとめて配置することができます。私もこれを理解することはできません。
#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;
}
「入力」を提供するときに '_getch()'によって返される内容を確認しましたか? – Martin
Windowsでは、新しい行に「\ r \ n」を発行します。 –
@JohnnyMopp C標準では、OSの行ターミネータが単一の文字であるかどうかにかかわらず、DTRTに 'printf(" \ n ")'が必要です。 (具体的には、テキストモードで開いているFILEオブジェクトの入力と出力の両方が、 '\ n 'とOSの行終端文字との間で変換する必要があります)' _getch'はC標準の一部ではないので、ルール。 – zwol