2011-01-09 3 views
24

出力は次のとおりです。haiCでのキャリッジリターン?次のプログラムの

\rキャリッジリターンがいずれかが私を助けることができ、このプログラムでは、実際にどのように働くか、私は取得できませんでしたか? 5.2.2/2(文字表示の意味)から

#include <stdio.h> 
#include<conio.h> 

void main() 
{ 
    printf("\nab"); 
    printf("\bsi"); 
    printf("\rha"); 
    _getch(); 
} 
+2

[これは私が得る出力ではありません](少なくとも一度は 'void main()'と非標準の 'conio.h'を修正しました) –

+0

私は、 mはVisual C++の出力を使って "hai" –

+0

あなたが望むものを得るためにabのようにabの最後に\ nを置くと、 – cristian

答えて

55

\bバックスペースは) 現在のライン上の前の位置にアクティブ 位置を移動します。アクティブな の位置が、 行の初期位置にある場合、ディスプレイ デバイスの動作は指定されていません。

\n改行)は 次の行の最初の位置にアクティブ 位置を移動します。

\r復帰)は 現在の行の最初の位置にアクティブ 位置を移動します。

ここ

、あなたのコードが生成されます。

  • <new_line>ab
  • \b:1文字
  • 書き込みsi:上書きされます(第2行目にasiを生産)s
  • \rb :現在の行の先頭に戻る
  • 書き込みha:最後に

(第2行目にhaiを生成する)最初の2つの文字を上書きし、出力は次のとおりです。

\nhai 
+0

bt出力は "hai"ではないahi –

+0

@mr_eclair最後の行に入力ミス: – icecrime

+0

+1疑いがなくクリアされています。ありがとうございました。 –

11

プログラムプリントab、1つの文字とプリントを行くsiasiの結果をbに上書きします。 キャリッジリターンは、カレットを現在の行の最初の列に戻します。すなわちhaas上に印刷されることを意味し、その結果は、hai

+0

+1今私はそれをありがとう –

5

ステップバイステップである:

asi 

SI

[改行] AB

ab 

[バックスペース] [送料 - リターン] ha

hai 

キャリッジリターン、改行は発生しません。場合によっては、単一のCRまたはLFをCR-LFペアに変換することができる。これは、コンソールおよび/またはストリームに依存します。

関連する問題