C 言語でキャリッジリターン文字として を使用する
このチュートリアルでは、キャリッジリターン文字として\r を使用するか、C 言語の行の先頭にカーソルを戻す方法について説明します。
C 言語のキャリッジリターン文字として\n を使用する
\r は、キーボードにあるリターンキーまたはEnterキーを表すキャリッジリターン文字として使用されます。キャリッジリターンキーは、Windows が \n を使用し、macOS がキャリッジリターンキーとして\r を使用するようなオペレーティングシステムに対して変更されます。
Enterキーが押されているかどうかを確認する場合は、\r または\n を使用して、リターンキーまたはEnterキーを表すことができます。たとえば、ユーザーから入力を受け取り、ユーザーがキーボードからEnterまたはリターンキーを押したときに入力プロセスを終了する場合は、キャリッジリターンキーを使用できます。
例えば、小文字で書かれた文章をユーザーに尋ね、その文章に存在する単語や文字の数を数え、ユーザーがEnterキーやリターンキーを押すと、そのコードが終了するコードを書いてみましょう。以下のコードを参照してください。
#include <stdio.h>
int main() {
int c_char = 0;
int c_word = 1;
printf("Enter Sentence: ");
char ch = 'a';
while (ch != '\n') {
ch = getchar();
if (ch == ' ')
c_word++;
else
c_char++;
}
printf("\n Words = %d ", c_word);
printf("Characters = %d", c_char - 1);
getch();
}
出力:
Enter Sentence: hello world
Words = 2 Characters = 10
上記のコードでは、文字数と単語数を格納するために、c_char と c_word の 2つの変数を使用しました。ループの終了に使用する文字を初期化し、キャリッジリターン文字と比較しました。これは、コードが Windows で実行されているため、\n です。
getchar() 関数を使用して、キーボードから押されている文字を取得しました。リターンキーまたはエンターキーを押すと、ループが中断され、を使用して単語数と文字数が出力されます。printf() 関数。if ステートメントを使用してスペースキーが押されているかどうかを確認し、押されている場合は c_word 変数をインクリメントし、他のキーが押されている場合は c_char 変数をインクリメントします。
getch() 関数を使用して、キーが押されるまで出力を一時停止し、出力と入力を確認できるようにします。上記のコードでは、コードが Windows で実行されているため、キャリッジリターンキーとして\n を使用しました。コードが終了しない場合は、\r を使用してコードをテストできます。
\r を使用して、カーソルを C の行頭に移動する
\r 文字を使用して、printf()、stderr()、stdout() などの一部の関数でカーソルを行の先頭に戻すこともできます。カーソルが先頭に移動し、\r 文字の前の前のテキストを\r 文字の後にある新しいテキストに置き換えます。
たとえば、printf() 関数内の\r 文字を使用してテキストを置き換えましょう。以下のコードを参照してください。
#include <stdio.h>
int main() {
printf("hello hello \rworld\n");
printf("hello hello \rworld world");
}
出力:
world hello
world world
上記のコードの最初の行では、最初の単語または最初の 4 文字だけが新しい単語に置き換えられ、残りのテキストは同じままです。コードの 2 行目では、新しいテキストの文字数が前のテキストの数と等しいため、前のテキスト全体が新しいテキストに置き換えられます。
以前のすべてのテキスト文字は、新しいテキスト文字が新しいテキスト文字以上である場合にのみ置き換えられます。
