みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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をいれるというのがあまりよくわかりません
あとどうして桁数がでるのでしょうか?

投稿日時 - 2004-01-24 14:59:49

QNo.759745

すぐに回答ほしいです

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

ご質問は下記の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

投稿日時 - 2004-01-24 15:41:22

お礼

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

投稿日時 - 2004-01-25 20:24:15

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2004-01-24 15:17:51

お礼

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

投稿日時 - 2004-01-24 15:33:00