然则,scanf() 和 gets() 是有区分的:scanf() 读取字符串时以空格为分开,碰到空格就以为当前字符串完毕了,所以没法读取含有空格的字符串。gets() 以为空格也是字符串的一部分,只要碰到回车键时才以为字符串输入完毕,所以,不论输入了多少个空格,只要不按下回车键,对 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 中。第二次输入的字符串,前半部分被第一个 scanf() 读取并存入 str2 中,后半部分被第二个 scanf() 读取并存入 str3 中。
注重,scanf() 在读取数据时须要的是数据的地点,这一点是恒定稳定的,所以关于 int、char、float 等范例的变量都要在前边增加&以猎取它们的地点。然则在本段代码中,我们只给出了字符串的名字,却没有在前边增加&,这是为何呢?由于字符串名字或许数组名字在运用的过程当中平常都邑转换为地点,所以再增加&就是节外生枝,甚至会致使错误了。
就现在学到的学问而言,int、char、float 等范例的变量用于 scanf() 时都要在前面增加&,而数组或许字符串用于 scanf() 时不必增加&,它们自身就会转换为地点。读者一定要服膺这一点。
至于数组名字(字符串名字)和地点的转换细节,以及数组名字什么时候会转换为地点。
以上就是c言语数组怎样输入?的细致内容,更多请关注ki4网别的相干文章!