1

常に「hello world」と表示されます。なんで?

#include <stdio.h>

int main(void)
{
    printf("..... world\rhello\n");
    return 0;
}
4

5 に答える 5

10

これは\rキャリッジ リターン(CR) であるためです。キャレットを行頭に戻します。その後hello、そこに書き込み、効果的にドットを上書きします。

\n(改行、LF) 一方、キャレットを 1 行だけ下に移動するために使用されます。これが、テレタイプライターがシーケンス CR-LF、または次の行の先頭にキャレットを配置するための改行が続くキャリッジ リターンを持っていた理由です。 . Unix はこれを廃止し、LF は独自にこれを行うようになりました。ただし、CR は古いセマンティクスでまだ存在します。

于 2013-08-28T09:01:59.713 に答える
4

youを使用すると、現在の行の先頭に戻り、ドット " "\rが上書きされます。.....

printf("..... world\rhello\n");
        ^^^^^        vvvvv
        hello <----- hello

使い方:

..... world
           ^

次に、現在の行の先頭に戻ります。

..... world
^

の後に単語を出力し\rます。結果は次のとおりです。

hello world
           ^
于 2013-08-28T09:04:23.223 に答える
2

唯一の\r(キャリッジ リターン) 文字により、端末は行を変更せずに行の先頭に戻るためです。したがって、 の左側の文字\rは で上書きされ"hello"ます。

于 2013-08-28T09:02:05.440 に答える