ここから本文です

¥bとはどういうときに使うのでしょうか たとえば

rih********さん

2012/1/2219:51:38

¥bとはどういうときに使うのでしょうか
たとえば

/*arry02*/
#include<stdio.h>
int main()
{
int a[]={1,2,100,50};
int i;
for(i=0;i<4;i++)
printf("a[%d]=%d,",i,a[i]);
printf(!\b\b \b\n");
return0;
}
の場合バックスペースで2つ戻りとあります

どこをどう戻っているのかさっぱりです

たすけてください

補足printf(!\b\b \b\n");がprintf("\b\b \b\n");でしたすいませんが訂正します

閲覧数:
3,127
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

shi********さん

編集あり2012/1/2220:40:03

コマンドプロンプトを起動して、インサートモードではなく上書きモードのときの動作を考えてみてください。
スペースキーを押すと空白文字が1文字表示されて、カーソルが1文字分右に移動しますよね。
BSキーを押したときはどうでしょう?
カーソルが1文字分左に移動してカーソル位置の文字が空白文字に変わりますよね?
なぜ空白文字になるかというと、カーソルを1文字左に移動したあと空白文字を表示しているからです。空白文字を表示するとカーソルが右に移動してしまうので、再びカーソルを左に移動する必要があります。
つまりBSキーを押すと、"\b \b"を表示しているわけです。

このプログラムの場合、"%d,!"を表示したあとにカーソルを2文字左に移動しています。
つまり、カンマの上にカーソルがいる状態になります。
そこに空白文字を表示するので、カンマが空白文字に置き換わります。次の\bは意味がないので無視して、そこで改行してます。
つまり、最後のカンマを消してるだけなので、単純に"\b !\n"でも同じ結果になりそうです。

というわけて、\bはコマンドプロンプトにおいて、カーソルを1文字分左に移動するだけの動作になります。

質問した人からのコメント

2012/1/23 10:06:24

成功 わかりました
ありがとうございます

ベストアンサー以外の回答

1〜1件/1件中

編集あり2012/1/2223:39:45

printf(!\b\b \b\n");
のところの 最初の " の位置がわかりませんが、適当に "!\b\b \b\n" とすると、

最後から2番目に現れるはずの、"!" の前の "," の文字がなくなっていると思いますが。

バックスペースで "," の位置に行き、" " のスペースで "," を消し、なぜかもう一回バックスペースで1文字バックした後改行してますよね。

>printf(!\b\b \b\n");がprintf("\b\b \b\n");でしたすいませんが訂正します

似たようなものですが、最後の "50," が "5 ," と、2文字帰ったところの '0' の文字を消しています。 他は前の回答と同じです。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる