定義された出力を提供するprintf()関数内でscanf()関数を使用できますか?はいの場合は、以下の簡単なコードの出力について説明してください。
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
printf("%d",scanf("%d",&a));
return 0;
}
定義された出力を提供するprintf()関数内でscanf()関数を使用できますか?はいの場合は、以下の簡単なコードの出力について説明してください。
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
printf("%d",scanf("%d",&a));
return 0;
}
ではない正確に。scanf
解析されたアイテムの数を返しますが、実行できることは次のとおりです。
printf("%d", (scanf("%d", &a), a));
コンマ演算子を使用しての結果を破棄しscanf
、代わりにの値を使用します。
printf
とscanf
は単なる機能です。上記のように、ある関数の出力を別の関数のパラメーターとして使用できます。
@MichaelTがコメントで述べているように、の戻り値はキーボードから読み取られた値でscanf
はありません。マニュアルページを確認すると、次のように表示されます。
これらの関数は、正常に一致および割り当てられた入力項目の数を返します。これは、提供された数より少ない場合もあれば、早期の一致が失敗した場合はゼロになる場合もあります。
つまり、この例では、有効な整数が入力された場合1
、または0
有効な整数が入力されていない場合に、を返します。
scanf
正常に行われた変換の数を返すように、サンプルプログラムは、提供された入力に応じて、、a、またはのいずれかを出力します(入力1
の0
開始が整数に変換可能な場合、非整数入力の場合、入力エラーの場合) )。-1
1
0
-1
わかりやすい
C では、printf() は出力に正常に書き込まれた文字数を返し、scanf() は正常に読み取られた項目の数を返します。
たとえば、以下のプログラムは akp 3 を出力します。
int main()
{
printf(" %d", printf("%s", "akp"));
getchar();
}
ユーザーが入力した文字列に関係なく、以下のプログラムは 1 を出力します。
int main()
{
char a[50];
printf(" %d", scanf("%s", a));
getchar();
}