現在、「苦しんで覚えるC言語」で勉強をしているプログラミング初心者です。
¥tについて調べて「¥tを一つ挿入するとTABキーを一回押した分だけ空欄になる」と解釈していましたが、上記のサイトには下の画像のように書いてありました。
これと全く同じようにプログラミングすると実行結果は同じようになったので、「¥tを挿入すると、¥tの後ろの頭がそろう」のかな?と思い下の画像のように表示される言葉を変えてみると、頭がそろわなくなりました。
なにが原因でしょうか?また、¥tはどのように使えばいいのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答7件
0
コンソールにタブを出力した場合、一般的には「8タブ」と呼ばれるように、半角文字8個幅の倍数のところまで進みます(スペースを最低1つ、最大8つ進めます)。
なので、8桁以上ずれていると、タブでも揃いません。
投稿2018/04/24 08:41
編集2018/04/24 08:42総合スコア146564
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
タグ(Tab)というのは、一定(例えば、8文字)の間隔で設定された位置(Tab Stop)まで進むキーです。
タイプライター(昔の映画に出てくるキーを打つと、活字が飛び出して紙に文字が印刷されるメカニカルな装置)には、文字の頭揃えをする場所を指定する金具がついていて、紙を動かすバーを左に押すと、次の金具の位置まで紙(紙が挟まっている部品)が動くようになっていました。その金具がtab stopで、紙を次のtab stopまで動かすのがtabを入れる操作でした。
これがテレタイプ、CRTターミナル、と引き継がれて、現在のエディタやコンピュータ画面でも機能しています。
質問にある実行結果の画面を見ると、8文字間隔のtabになっているようですね。
そうすると、
先頭から、0~7文字を入力した後でtabを打つと、9文字目に移る。
先頭から、8~15文字を入力した後でtabを打つと、17文字目に移る。
先頭で、2回tabを打つと、17文字目に移る。
というように動きます。
tabを打って移動する距離(文字数)は、次のtab stopまでの距離になるので、一定しません。
次のtab stopが同じなら、同じ位置まで進むので、頭揃えに使えますが万能ではありません。
a (tab) b
c (tab) d
だと、bとdが揃いますが、
abracadabra (tab) b
c (tab) d
だと、bとdは揃いません。(abracadabraが8文字を超えてますから)
投稿2018/04/24 08:58
総合スコア6919
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
¥t はデフォルトで「半角◯文字分」のスペースが挿入されるものだと思います。
が、それまでに入力されている文字数もカウントし、◯文字の倍数になるように調整してスペースを挿入します。
++++++++++2018/04/25 追記++++++++++++
正確には、現在のカーソル位置から最短距離にある次の基準線まで進む。
基準線はエディタにより明示的に表示されていたり、そうでなかったりするが
基本的には4文字か8文字分で設定されている。
+++++++++++++++++++++++++++++++++++
最初のC言語での頭揃えが正常に使用できているのは、以下のような状態だからだと思われます。
※以下、文字数にインデックスを貼ります。また、¥tを「半角4文字分」と想定しております。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
W | i | n | d | o | w | s | M | i | c | r | o | s | o | f | t | |
M | a | c | O | S | A | p | p | l | e |
説明が難しいので表にさせていただきましたが、
"Windwos Microsoft"の場合、¥tまでに入力されているのが 7 文字であるため、
7以降の最小の「4の倍数」である"8"に揃うように 1 文字分のスペースが挿入されています。
"MacOS Apple"の場合、¥tまでに入力されているのが 5 文字であるため、
5以降の最小の「4の倍数」である"8"に揃うように 3 文字分のスペースが挿入されています。
上記のように考え、全角文字を半角文字2文字分とした場合、
ある日=6文字
クマさんに=10文字
となります。
¥tを足した実行結果を見ると
ある日¥t=半角8文字
くまさんに¥t=半角16文字
となっているため、この場合の¥tは「半角スペース8文字分」となっているはずです。
説明力不足で申し訳ないですが、使い方が見えてくると幸いです。
投稿2018/04/24 08:52
編集2018/04/25 01:16総合スコア230
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/24 10:39

0
タブ文字は(典型的に)現在のカラム位置の「次のカラム位置(典型的には8の倍数)」までスキップする意味しかないです。文字の幅が等幅か可変幅かによっても振る舞いがかわるかも知れませんし、文字を表示するプログラム(コマンドプロンプトのような端末ソフトやエディターなど)によっても違うかも知れません。
要するに結構アバウトなものです。
色々な長さの文字列を表示してタブがどう扱われるか経験を積んでみてください。あまりあてにできるような代物でないことが自然にわかってくるはずです。
投稿2018/04/24 08:57
総合スコア18404
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
\tはタブ文字を意味するだけです。このプログラムはTAB文字を出力します。
TAB制御文字を受け取ったらどう表示・印刷するかはソフトウェア/システムによって異なります。
windowsのcmd.exeだと「空白文字を1~8個出力して8の倍数のカラム位置になるようにする」という動作をしていますね。また、漢字ひらがななど(全角文字)は2カラム幅(半角英数2文字分)で横幅で表示するようになっています。
「くまさんに\t出会った」だと「くまさんに」に5x2=10カラム分の幅があるので「出会った」の「で」は16カラム目から表示されます。
投稿2018/04/25 07:54
総合スコア702
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。