ホームページ >バックエンド開発 >C#.Net チュートリアル >C言語で配列を入力するにはどうすればよいですか?

C言語で配列を入力するにはどうすればよいですか?

little bottle
little bottleオリジナル
2019-05-07 10:42:34104729ブラウズ

C言語で配列を入力するにはどうすればよいですか?

C 言語には、キーボードから配列データを入力できる関数が 2 つあります。gets()scanf() 。 scanf() は、フォーマット制御文字 %s を介して配列文字列を入力します。文字列に加えて、他のタイプのデータも入力できます。gets() は配列文字列を直接入力し、文字列のみを入力できます。

ただし、scanf() と gets() には違いがあります。

scanf() 文字列を読み取るときは、文字列はスペースで区切られます。スペースが出現すると、現在の文字列が終了したものとみなされ、スペースを含む文字列は読み取ることができません。

gets()スペースも文字列の一部であることを考慮すると、文字列の入力は Enter キーが入力されたときにのみ終了するとみなされるため、スペースがいくつ入力されても、 Enter キーが押されていない限り、Enter キーは gets() の完全な文字列です。つまり、gets() は文字列の行全体を読み取るために使用されます。
例:

#include <stdio.h>
int main(){
char str1[30] = {0};
char str2[30] = {0};
char str3[30] = {0};
//gets() 用法
printf("Input a string: ");
gets(str1);
//scanf() 用法
printf("Input a string: ");
scanf("%s", str2);
scanf("%s", str3);
//分别输出
printf("\nstr1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}

実行結果:

Input a string: C C++ Java Python
Input a string: PHP JavaScript
str1: C C++ Java Python
str2: PHP
str3: JavaScript

最初の入力文字列はgets()によって完全に読み取られ、str1に保存されます。 2 番目の入力文字列の前半は最初の scanf() によって読み取られて str2 に格納され、後半は 2 番目の scanf() によって読み取られて str3 に格納されます。
scanf() は、データを読み取るときにデータのアドレスが必要であることに注意してください。これは定数であるため、int、char、float およびその他の型の変数の場合は、アドレスを取得するために前に & を追加する必要があります。しかし、このコードでは文字列の名前だけを指定し、先頭に & を追加していません。これはなぜでしょうか?文字列名または配列名は通常、使用中にアドレスに変換されるため、& を追加する必要はなく、エラーが発生する可能性もあります。
これまでに学んだ知識に関する限り、scanf() で使用する場合、int、char、float などの型の変数は先頭に & を付ける必要がありますが、配列や文字列を先頭に追加する必要はありません。 scanf() で使用され、それ自体がアドレスに変換されます。読者はこのことを念頭に置いておかなければなりません。
配列名(文字列名)とアドレスの変換の詳細と、配列名がアドレスに変換されるタイミングについて。

以上がC言語で配列を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。