ホームページ >バックエンド開発 >C#.Net チュートリアル >C の scanf() と gets() の違い (コード例)
scanf() 関数
標準入力 (キーボード) から入力 (文字、文字) を読み取るために使用されます。 ) 文字列、数値データ)。
これは、スペース、改行文字、またはファイルの終わり (EOF) が見つかるまで入力を読み取るために使用されます。
たとえば、次のコードを参照してください:
#include <stdio.h> int main() { char str[20]; printf("enter something\n"); scanf("%s", str); printf("you entered: %s\n", str); return 0; }
ここでの入力はユーザーによって提供され、出力は次のようになります:
输入: Geeks for Geeks 输出: Geeks 输入: Computer science 输出: Computer
gets( ) function
標準入力(キーボード)からの入力を読み取るために使用されます。これは、改行文字またはファイルの終わり (EOF) が見つかるまで入力を読み取るために使用されます。
#include <stdio.h> int main() { char str[20]; printf("enter something\n"); gets(str); printf("you entered : %s\n", str); return 0; }
ここでは、次のように入力がユーザーによって提供されます。
输入: Geeks for Geeks 输出: Geeks for Geeks 输入: Computer science 输出: Computer science
これらの主な違いは次のとおりです。
scanf() は入力を読み取ります。空白、改行、またはファイルの終わり (EOF) に遭遇するまで、gets() は改行またはファイルの終わり (EOF) に遭遇するまで入力を読み取りますが、gets() はスペースが入っても入力の読み取りを停止しません。が見つかりましたが、スペースを文字列として扱います。 scanf は異なるデータ型の複数の値を読み取ることができますが、gets() は文字列データのみを取得できます。
差異は、次のように表形式で表示できます:
SCANF() | GETS() |
scanf() を使用して文字列入力を読み取る場合、スペース、改行文字、またはファイルの終わりに遭遇すると読み取りが停止します | gets() がused to read 入力を取得するときに、改行文字またはファイルの終わりに遭遇すると、入力の読み取りを停止します。 空白を文字列として扱いますが、空白に遭遇しても入力の読み取りを停止しません。 |
任意のデータ型の入力を読み取るために使用されます。 | これは文字列入力にのみ使用されます。 |
scanf() を使用してユーザーの全文を読み取る方法
実際には、scanf() を使用して読み取ることができます。文字列全体。たとえば、scanf() で %[^\n]s を使用すると、文字列全体を読み取ることができます。
#include <stdio.h> int main() { char str[20]; printf("Enter something\n"); // Here \n indicates that take the input // until newline is encountered scanf("%[^\n]s", str); printf("%s", str); return 0; }
上記のコードは、改行文字が見つかるまで文字列を読み取ります。
例:
输入: Geeks for Geeks 输出: Geeks for Geeks 输入: Computer science 输出: Computer science
関連する推奨事項: 「C チュートリアル 」
この記事は、C の scanf() と gets() の関係について説明しています。違いも紹介していますので、困っている友達の参考になれば幸いです!
以上がC の scanf() と gets() の違い (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。