C 言語で scanf 関数を正しく使用する方法
はじめに:
C 言語では、scanf 関数は一般的に使用される入力関数の 1 つです。ユーザーがキーボードからデータを入力できるようになります。ただし、scanf 関数の一部の機能や使用法には微妙な違いがあるため、問題が発生しやすい場合があります。この記事では、scanf関数の正しい使い方と注意点を、具体的なコード例を交えて紹介します。
1. scanf 関数の基本的な使用法:
scanf 関数の基本的な使用法は非常に簡単で、フォーマット文字列をパラメータとして使用し、フォーマット文字列は入力のタイプとフォーマットを指定します。データ。たとえば、「%d」は整数の入力を意味し、「%f」は単精度浮動小数点数の入力を意味し、「%s」は文字列の入力を意味します。
サンプルコード 1:
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); // 输入一个整数 printf("您输入的整数是:%d ", num); return 0; }
2. scanf 関数の戻り値とバッファの問題:
scanf 関数は、データの読み込みに成功した場合、読み込みに成功したデータの数を返します。失敗すると、EOF が返されます。読み取りが失敗すると、scanf 関数は入力バッファーにエラーを残すことに注意することが重要です。これにより、後続の入力操作で予期しない結果が生じる可能性があります。
サンプル コード 2:
#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 関数の前にスペースがあります。目的は、前の scanf によって入力バッファに残った改行文字を削除することです。関数。そうしないと、2 番目の scanf 関数がバッファ内の改行文字を読み取り、誤った結果を生成します。
3. scanf 関数の書式文字列の問題:
書式文字列を使用するときは十分に注意してください。書式文字列が間違っていると、プログラムがクラッシュしたり、間違った結果が生成されたりする可能性があります。
サンプル コード 3:
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数:"); scanf("%d%d", &num1, &num2); // 输入两个整数 printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
上記のコードの最初の scanf 関数の書式文字列 "%d%d" は、スペースとタブを使用するか、改行で区切って 2 つの整数を読み取ることを意味します。入力時に 2 つの整数を適切に分離しないと、入力エラーが発生します。
4. scanf 関数の入力制限の問題:
scanf 関数は、デフォルトで入力ターミネータとしてスペース、タブ、または改行文字を使用します。入力の長さを制御する必要がある場合は、フォーマット文字列で修飾子を使用できます。
サンプル コード 4:
#include <stdio.h> int main() { char name[20]; printf("请输入您的名字(不超过20个字符):"); scanf("%19s", name); // 输入一个字符串,最多19个字符 printf("您的名字是:%s ", name); return 0; }
上記のコードの修飾子「s」は、オーバーフローを防ぐために最大 19 文字を入力できることを意味します。配列の添字は 0 から始まるため、「s」の長さは 20 ではなく 19 になることに注意してください。
結論:
scanf 関数を正しく使用するには、戻り値とバッファーの問題、フォーマット文字列の問題、および入力制限の問題に注意する必要があります。実際のプログラミングでは、これらのガイドラインに従い、必要に応じて適切な修正を行うよう注意してください。 scanf 関数を正しく使用することによってのみ、高品質で堅牢な C 言語プログラムをより適切に作成できます。
以上、C言語のscanf関数の正しい使い方をご紹介しましたので、ご参考になれば幸いです。読んでくれてありがとう!
以上がC言語のscanf関数の正しい使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。