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

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

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

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

Q&A

2回答

3716閲覧

C言語 \tの使い方がわかりません

nyanyanyamin

総合スコア0

C

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

0グッド

0クリップ

投稿2021/05/04 14:56

編集2021/05/04 14:59

現在苦しんで覚えるC言語を使ってC言語の勉強をしているのですが
\tの使い方がわからず困っております。

イメージ説明

上記画像の問題についてなのですが、本書の解答では
イメージ説明

のように記されているので、
mac os(Big Sur ver.11.2.3)のxcode(ver.12.5)を使って
イメージ説明

と同様に打ち込んでみたのですが、実行しても
イメージ説明
と表示されてしまい、:での頭添えができませんでした。
コーディングの際に「Intel \t:」「AMD \t:」というように文字と\tの間にスペースをおいて実行するときちんと:で頭添えできるのですが、本書中では特にスペースについて言及されておらず、解答でもスペースなしでコードが書かれているのでなぜこうした実行結果になっているのかわかりません。

どなたか教えていただく事はできますでしょうか。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

\tは「タブ」という機能で、「次の『タブ幅の整数倍の位置』まで進める」という機能です。
タブ幅が8なら、行頭を0とすると、8, 16, 24, ・・・の位置になります。
タブ幅は、設定によって異なるので、あなたの設定では4なのでしょう。

書籍では、端末で一般的な8を想定しているのでしょう。

投稿2021/05/04 15:12

otn

総合スコア84499

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

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

0

昔々、C言語が生まれた頃、コンピュータ「本体」はただの「箱」でした。計算するだけ。キーボードから入力するとか、プリンターに文字を出したり画面に文字を表示するというのも当時のコンピュータにとってはそれなりの重い負担でしたから、別の装置として独立していて、それと(多くはシリアル:RS232等で)データをやりとりしていました。このキーボードとプリンタだけの機械がそもそもの「端末装置(Terminal)」でした。また、歴史が下るとプリンタで紙に文字を打ち出すのでなく画面上に文字を映す「CRT端末」になって、画面表示を制御する「エスケープシーケンス」が使われるようにもなりました...
「装置」はいまはコンピュータ本体にとりこまれてそれでも「端末/Terminal」と呼ばれていたりします。今となっては全然「標準」ではない「標準入力/出力」なんていう考え方も、この構成が根っこにあるものです。

タブというのは、直接は文字を表さない文字コード(0x9, \t)を使って端末に対してある位置までカーソルを進める、という命令です。もともとタイプライターの機能で、その発展形としてプリンターに載ったもの。どの位置まで進めるかは端末装置(端末プログラム)側が決めることで、C言語側は預かり知らぬことです。昔はtabは8カラム(桁)毎というのが多かったように思いますが、最近では2~4カラム毎に設定することのほうが多いでしょうか。

という昔話を前提にして。

今回について言えば、出題側でタブが何カラム毎かを指定しないかぎり出題ミスというか不適切な出題設定というか...だと思います。

その問題であれば

C

1 printf("Intel :Core i7\n", "Intel"); 2 printf("AMD :Phenom II\n", "AMD");

で完全に題意を満たしているので難しいことをしないのがよいのではないでしょうか。

あるいは、もう少しかっこよく?やるなら、

C

1 const int COLUMN=8; 2 printf("%-*s:Core i7\n",COLUMN, "Intel"); 3 printf("%-*s:Phenom II\n",COLUMN, "AMD");

とでもするかしら。

別件。
コードの提示は画像はやめて下さい。テキストのコピペでお願いします。この程度ならまぁいいけど、写真じゃ間違いがあったときなど「目で探す」しかないし、回答者側で試してみようとしても全部「手で打ち直し」などという羽目になるので。

投稿2021/05/04 23:59

編集2021/05/05 00:08
thkana

総合スコア7629

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問