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

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

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

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

Q&A

5回答

4231閲覧

putchar関数の意義について

FumiakiNakao

総合スコア180

C

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

0グッド

0クリップ

投稿2015/10/06 08:28

putchar関数の存在意義がよくわかりません

ネットで調べると「画面に1文字出力する関数」と書いてあったのですが、
それだとputsやprintfでも代用可能だと思いました

putchar関数を使う意義は何なのでしょうか?

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

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

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

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

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

guest

回答5

0

putcharでは、引数として文字列ではなくint型の値を取ります。そのため、「1文字だけ」出力したい時に、それを(文字列を用意することなく)実現できます。なお、'a'のような一重引用符のリテラルは文字列ではなく、数値になります。

なお、putsには出力の最後を改行する機能がありますので、putcharの代わりに使うことはできません。また、printf("%c", c)としても動作は同じですが、「1文字しか出さない」とわかっているのに文字列をパースするのも無駄だというのが、C言語流の考え方です(組み込み環境では、printfのような高度な機能がないこともあります)。

投稿2015/10/06 08:38

maisumakun

総合スコア145183

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

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

0

みなさんややこしい回答されてますが、つまりはC言語ができた昔は1文字でも表示できることがありがたかったんですw

投稿2016/01/12 19:33

mike

総合スコア118

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

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

0

処理系によっては、putchar が実質 fputc になって実質 puts や printf と大差ない処理系も多いですが、
世の中には実装が異なる処理系もあるようですよ。

某社のミニコンでは、putchar 系のコンソール以外のストリームio はバッファリングされる仕様でした。
コンソールで実行すると、文字の表示にものすごい違和感がありましたが…
まぁ、古き良き?時代の名残なのでしょうかねぇ。

投稿2015/11/05 20:03

T.Kanno

総合スコア915

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

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

0

フィルタ系のプログラムで、トークンの切り出し(字句解析)をするときに、
ungetc()と組み合わせて使うのが目的なんじゃないでしょうか。
例えば、「一語は1個以上の空白で区切られている空白以外の文字の連続」という仕様があったとすると、
空白のスキップは、

C

1 whike ( (c=getchar()) == ' ' ) 2 ; 3 ungetc(c,stdin); //先読みした文字を戻す

こんな感じでかけますので、一文字取得は必要です。確かにprintfで代用できますが掛かるコストが違います。

投稿2015/11/19 13:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

putcharはgetcharと組み合わせて使用することを前提として設計されています。
これは「フィルター」というものを作るときに便利です。
たとえば、読み込んだ文字列を大文字に変換して出力するプログラムを考えてみます。

int c;
while( (c = getchar()) != EOF){
putchar(toupper(c));
}

このように、文字単位でスマートに書けるようputcharは設計されています。
別のもので代用できることは事実ですが、速度や明解性はputcharに軍配が上がると思います。

参考URL
http://gihyo.jp/dev/serial/01/c-programming-introduction/0019

投稿2015/10/13 05:19

majiponi

総合スコア1720

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問