C 言語の Scanf 入力形式に関するよくある質問の分析
C 言語でのプログラミングのプロセスにおいて、入力関数はプログラムの実行に非常に重要です。 。ユーザー入力を受け取るために、scanf 関数をよく使用します。ただし、入力の多様性と複雑さにより、関数 scanf の使用時にいくつかの一般的な問題が発生する可能性があります。この記事では、scanf 入力形式に関する一般的な問題を分析し、具体的なコード例を示します。
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); printf("您输入的整数是:%d ", num); return 0; }
ユーザーが数字以外の文字を入力すると、プログラムはユーザーの入力を正しく読み取ることができず、誤った出力結果が得られます。この問題を解決するには、ループと条件ステートメントを使用して、不正な入力を処理します。
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); while (scanf("%d", &num) != 1) { printf("输入错误,请重新输入:"); while (getchar() != ' '); } printf("您输入的整数是:%d ", num); return 0; }
この例では、scanf 関数によって返された値をチェックすることによって、入力形式が正しいかどうかを判断します。正しくない場合は、while ループを使用して入力バッファーから不正な文字をクリアし、ユーザーに入力を再度求めます。
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数,用空格分隔:"); scanf("%d%d", &num1, &num2); printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
この問題を解決するには、形式文字列にスペースを追加して、先頭と末尾のスペースと改行をスキップします。
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数,用空格分隔:"); scanf(" %d%d", &num1, &num2); printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
この例では、scanf 関数が先行するスペースまたは改行文字をスキップするように、「%d」の前にスペースを追加します。
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); scanf("%c", &ch); printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
このプログラムを実行して整数と文字を入力すると、文字の入力を待たずにプログラムが直接終了することがわかります。これは、整数を入力した後、入力バッファーにまだ抽出されていない改行文字が存在し、2 番目の scanf 関数が長さ 1 の改行文字を直接使用するためです。これを回避するには、%c の前にスペースを追加して、入力バッファ内の改行をスキップします。
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); scanf(" %c", &ch); printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
この例では、scanf 関数が入力バッファー内の改行をスキップするように、フォーマット文字列の「%c」の前にスペースを追加します。
上記の分析とコード例を通じて、C 言語の scanf 入力形式の一般的な問題をより深く理解し、プログラムの堅牢性とユーザー エクスペリエンスを向上させるためにこれらの問題に合理的に対処する方法を学ぶことができます。実際のプログラミングでは、ユーザー入力が正しく読み取られるように、特定のニーズや入力シナリオに応じてコードを適切に調整する必要もあります。
以上がC 言語の scanf 関数の一般的な入力形式の問題を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。