• ベストアンサー

printfを代入する?

#include <stdio.h> int main(void) { int kaerichi,nyuuryokumoji; char moji[40]; printf("\n数字を入力してください:"); scanf("%d",&nyuuryokumoji); kaerichi=printf("%d",nyuuryokumoji); printf("\n入力数字の桁数は%dです\n",kaerichi); printf("\n文字を入力してください:"); scanf("%s",&moji); kaerichi=printf("%s",moji); printf("\n入力された文字は%dです\n",kaerichi); return(0); } このプログラムでkaerichi=print("d",nyuuryokumoji); とありますがどういう意味でしょうか? 変数に数字などを入れるのはわかるのですが printfをいれるというのがあまりよくわかりません あとどうして桁数がでるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ara_ara
  • ベストアンサー率35% (124/348)
回答No.2

ご質問は下記の2行の意味についてですね。 kaerichi=printf("%d",nyuuryokumoji); kaerichi=printf("%s",moji); これを理解するには「printf()関数」の関数仕様を調べる必要があります。 #1さんの回答にあるように、printf()は、それを実行した結果 出力した文字数(バイト数)をint型の値として返します。従って、  kaerichi=printf("%d",nyuuryokumoji); では、整数値nyuuryokumojiを10進文字列形式で出力したときの 文字数がkaerichiに代入され、2番目の  kaerichi=printf("%s",moji); では、文字列mojiを出力した時の文字数がkaerichiに代入されます。 C言語でわからない時は、使用している関数の仕様を調べてみる ようにするといいと思います。

参考URL:
http://momi.jwu.ac.jp/ccenter/clang/inoutf.htm
shoshosho
質問者

お礼

詳しい解説に参考URLありがとうございました^^ お気に入りにいれておこうと思います

その他の回答 (1)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

printf関数は、戻り値として、printfが処理したデータのバイト数を返します。従って、この場合は、入力された文字をprintfで画面に表示していますので、入力された文字の桁数を返します。

shoshosho
質問者

お礼

ということは12だと2バイト123だと3バイトと いうことでしょうか? それでたまたま?バイト数と桁数が同じに なっているから文字の桁数を返しているということでしょうか? 回答ありがとうございました

関連するQ&A