質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • C

    3821questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

\tの使い方がわかりません。

解決済

回答 7

投稿

  • 評価
  • クリップ 0
  • VIEW 522

marumiya33

score 1

現在、「苦しんで覚えるC言語」で勉強をしているプログラミング初心者です。
¥tについて調べて「¥tを一つ挿入するとTABキーを一回押した分だけ空欄になる」と解釈していましたが、上記のサイトには下の画像のように書いてありました。
イメージ説明
これと全く同じようにプログラミングすると実行結果は同じようになったので、「¥tを挿入すると、¥tの後ろの頭がそろう」のかな?と思い下の画像のように表示される言葉を変えてみると、頭がそろわなくなりました。イメージ説明
イメージ説明
なにが原因でしょうか?また、¥tはどのように使えばいいのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • marumiya33

    2018/04/24 18:11

    回答頂いた方全員、すごくわかりやすかったです!おかげさまで、tabとはうまく付き合っていけそうです。 ありがとうございました。

    キャンセル

回答 7

+5

コンソールにタブを出力した場合、一般的には「8タブ」と呼ばれるように、半角文字8個幅の倍数のところまで進みます(スペースを最低1つ、最大8つ進めます)。

なので、8桁以上ずれていると、タブでも揃いません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

タグ(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文字を超えてますから)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+3

¥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 19:39

    > ¥t はデフォルトで「半角◯文字分」のスペースが挿入されるもの
    は間違い。 エディタによってはそういう動作するのもありますが、他の方が書かれているように、次の文字位置を設定するものです。
    ただ、昨今のGUI環境では、色々と動きがあるので、一概に何が、、とは言えませんが。

    キャンセル

  • 2018/04/25 10:09

    >> ¥t はデフォルトで「半角◯文字分」のスペースが挿入されるもの
    >は間違い。 エディタによってはそういう動作するのもありますが、他の方が書かれているように、次の文字>位置を設定するものです。
    ですね。言い回しには色々悩みましたが、投稿者様が「プログラミング初心者」とのことだったので
    できるだけ噛み砕いた理解しやすい言い方を考えてこのような表現になってしまいました。
    ニュアンスとして方向性が違うので、皆様のおっしゃる通り「次のカラムまで進む」という回答の方がよかったかもしれません。申し訳ない。。。

    キャンセル

+3

\t というのはTABです。
キーボードのCapsLockの上にあるキーですね
テキストエディタでのTABキーをみれば、その出力結果にも納得行くかと思いますが

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

\t を画面上に表示するのは、実行環境(アプリ)に依存するので基本表示制御には使用しません。
また、制御文字なのでどの様に扱うかもアプリしだいです、例えば Excel では列の区切りに使用しています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

タブ文字は(典型的に)現在のカラム位置の「次のカラム位置(典型的には8の倍数)」までスキップする意味しかないです。文字の幅が等幅か可変幅かによっても振る舞いがかわるかも知れませんし、文字を表示するプログラム(コマンドプロンプトのような端末ソフトやエディターなど)によっても違うかも知れません。

要するに結構アバウトなものです。

色々な長さの文字列を表示してタブがどう扱われるか経験を積んでみてください。あまりあてにできるような代物でないことが自然にわかってくるはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

\tはタブ文字を意味するだけです。このプログラムはTAB文字を出力します。
TAB制御文字を受け取ったらどう表示・印刷するかはソフトウェア/システムによって異なります。
windowsのcmd.exeだと「空白文字を1~8個出力して8の倍数のカラム位置になるようにする」という動作をしていますね。また、漢字ひらがななど(全角文字)は2カラム幅(半角英数2文字分)で横幅で表示するようになっています。

「くまさんに\t出会った」だと「くまさんに」に5x2=10カラム分の幅があるので「出会った」の「で」は16カラム目から表示されます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

  • 解決済

    xcodeでの画面サイズ変更方法

    swiftでサンプルコードを写しているのですが、参考書を今まで放置してたのでxcodeのバージョンが違うので画面サイズ変更の方法がわからないです。 simulatorでの表示画面

  • 解決済

    Blender Game Engineでマテリアルを透過したい

    Blenderでゲーム開発をしようとしているものです。 Blender Renderで透過処理したマテリアルをBlender Gameに反映させたいと思っているのですが、透過でき

  • 解決済

    ACCESS クエリでの一部重複?の除外方法について

    前提・実現したいこと こんにちは、質問タイトルが適格でないかもしれませんが宜しくお願いいたします。 通販事業をしており、商品の仕入から販売までのデータベースをACCESSの

  • 受付中

    この場合キャッシュが効くのか

    キャッシュが効いているのかわかりません headerにCache-Control=no-cacheを指定しているがETagやLast-Modifiedを指定しない場合、

  • 解決済

    GAS(google apps script)で一つのスプレッドシート内にある複数のスクリプトの挙動...

    GASに詳しい方、教えていただけますと助かります。 表題の件、一つのスプレッドシートに対してスクリプトが複数あってそれぞれに同じトリガーを設定している場合、そのトリガーが入っ

  • 受付中

    ER図について

    つぶやきアプリを作っているのですが、 ER図を作るとする例えばどんなものがありますか?? サンプル程度でいいので教えていただきたいです

  • 解決済

    pycharmのpython console部分の色の変更

    プログラムには関係ないんですが・・・ 長時間PCの画面を見てると目が疲れてしまうので、色を変えてみようと思って 色を変更してみたのですが、python consoleの部分の色

  • 解決済

    ASUS ZenPadで、Camera2APIで、1分動画を2時間分撮影したいです。

    Nexsus 5Xでは、1分動画を、2時間ぶん、撮影することができました。 しかし、ZenPadでは、エラーが出ます。 このようなエラーが繰り返して表示されます。 参

同じタグがついた質問を見る

  • C

    3821questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。