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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

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

Q&A

解決済

7回答

21378閲覧

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

marumiya33

総合スコア7

C

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

0グッド

2クリップ

投稿2018/04/24 08:24

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marumiya33

2018/04/24 09:11

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

回答7

0

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

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

投稿2018/04/24 08:41

編集2018/04/24 08:42
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

¥t はデフォルトで「半角◯文字分」のスペースが挿入されるものだと思います。
が、それまでに入力されている文字数もカウントし、◯文字の倍数になるように調整してスペースを挿入します。

++++++++++2018/04/25 追記++++++++++++
正確には、現在のカーソル位置から最短距離にある次の基準線まで進む。
基準線はエディタにより明示的に表示されていたり、そうでなかったりするが
基本的には4文字か8文字分で設定されている。
+++++++++++++++++++++++++++++++++++

最初のC言語での頭揃えが正常に使用できているのは、以下のような状態だからだと思われます。

※以下、文字数にインデックスを貼ります。また、¥tを「半角4文字分」と想定しております。

1234567891011121314151617
WindowsMicrosoft
MacOSApple

説明が難しいので表にさせていただきましたが、
"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
zvub1123

総合スコア230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2018/04/24 10:39

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

2018/04/25 01:09

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

0

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

投稿2018/04/24 08:43

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2018/04/24 08:57

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2018/04/24 08:38

hogeratta

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

投稿2018/04/25 07:54

a_saitoh

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問