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

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

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

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

Q&A

解決済

3回答

593閲覧

c言語のgetchar()

tsehcohi

総合スコア17

C

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

0グッド

0クリップ

投稿2018/10/14 10:59

編集2018/10/14 11:10

#include <stdio.h>

int main(void)
{
char ch;
do {
ch = getchar();
putchar('.');
} while (ch != '\n');

return 0;
}
実行例
aa
...
c言語の参考書にあったコードなのですが、このような実行結果になるのが理解できません。
getcharで複数の文字を打つと、最初の文字が返されて他の文字はバッファに残るのは知っているのですが、そうしたら上の例だと、
a.a.
.
のようになると思ったのですが、どういう仕組みで実行例のようになるのかと思い質問させていただきました。
どなたかご教授お願い致します。

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

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

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

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

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

guest

回答3

0

端末からの行入力は、Enterを押して始めてプログラムに渡ります。

言い換えると、最初のgetchar()は、何文字入力しても、Enterを押すまでリターンしてきません。
次のgetchar()はバッファに文字があるので、瞬間的にリターンします。

Unix/Linuxだと、Ctrl-Dを押しても入力した文字がプログラムに渡るので、
a Ctrl-D a Ctrl-D と押せば、
a.a.と表示されると思います。

投稿2018/10/14 11:25

otn

総合スコア84533

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

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

tsehcohi

2018/10/14 13:50

回答ありがとうございます。 よく理解出来て、更に新しいことまでご教授頂き本当に有難いです。
guest

0

ベストアンサー

単に、文字aを出力していないからだと思います。
その実行例の一行目はユーザの入力であって、プログラムに依って出力されたものではありません。

投稿2018/10/14 11:06

LouiS0616

総合スコア35660

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

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

tsehcohi

2018/10/14 11:14

理解できました。 迅速な解答有難うございました。
guest

0

以下のようになります。

c

1usr~/test/c % ./a.out 2aa ←キーボード入力 3a.a. 4.usr~/test/c % cat t.c 5#include <stdio.h> 6 7int main(void) 8{ 9 char ch; 10 do { 11 ch = getchar(); 12 putchar(ch);← 追加 13 putchar('.'); 14 } while (ch != '\n'); 15 16 return 0; 17} 18usr~/test/c %

投稿2018/10/14 11:16

cateye

総合スコア6851

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

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

cateye

2018/10/14 11:17

かぶった・・;;
tsehcohi

2018/10/14 13:53 編集

回答ありがとうございます。 これはpurchar(ch)が追加されると a.a. . のようになるという解釈でよろしいですか?
cateye

2018/10/14 16:07

デスですv^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問