0

scanf() 関数を使用して IO デバイスに出力する可能性はありますか?

main()
{
char str[30];
scanf("\n Name ?%s",&str);

printf("\n Name Entered is %s",str);
}

これを試して、私を助けてください。

4

2 に答える 2

6

このscanf関数は、コンソールから入力を読み取り、解析します。何も印刷する手段がありません。それが、適切な名前printfの関数ファミリーの目的です。

于 2012-09-16T08:32:58.147 に答える
3

への最初の引数scanfはプロンプトではなく (想定しているように見えます)、入力をスキャンするために使用されるフォーマット文字列です。

入力がリテラル文字列などを含め、期待されるものと正確にscanf一致しない限り、これは失敗します。また、最初の空白で停止するため、入力すると名前のみが取得されます。プロンプトが必要な場合は、次のように事前に出力するだけです。"Name ?"udhayar kumar

char str[30];
printf ("Name? ");
scanf ("%s", str);

printf ("Name Entered is %s\n", str);

ただし、バインドされていない%s書式指定子scanfは、プログラムをクラッシュさせたり、侵入できるセキュリティ ホールを誰かに与えたりする簡単な方法であることに注意してください (「バッファ オーバーフロー」を参照)。これは、入力の境界チェックがないためです。

まともな入力機能が必要な場合は、これをチェックしてください。行全体 (オプションのプロンプト付き) を取得し、エラー状態を適切に処理します。

于 2012-09-16T08:41:54.367 に答える