#include<stdio.h>
main()
{char a1[5],a2[5],a3[5],a4[5];
scanf("%s%s",a1,a2);
gets(a3);gets(a4);
puts(a1);puts(a2);
puts(a3);puts(a4);
}
键盘输入:
aa bb<回车>
cc dd<回车>
为何输出结果是:
aa
bb
cc dd
由于scanf函数遇到空格后就停止输入,如需要输入一句话的话,要尝试其他的函数例如gets()函数。
原型函数为char *gets(char*buffer),返回一个指向char的指针,返回的指针与传递给他的指针是同一个指针。
例子:
char name[20];
gets(name);
printf(“%s”,name);
此时在控制界面中输入hello world,输出将会是hello world。
上例同时也可以写成:
char name[20];
char *ptr;
ptr=gets(name);
printf(“%s”,name);
printf(“%s”,ptr);
此时两句话输出的都是hello world,从而证明ptr的指针就是赋给gets函数的指针。但是gets()函数有一个缺点,当输入的字符串的长度大于申请的空间时,会造成空间越界,此时在函数执行结束释放空间时会报错。
扩展资料
1、输出字符串的效果,宽度和精度同样也适用于字符串。
3、put是需要遇到’\0’才会输出的,因此通过字符串数组遍历赋值时,不要忘记加’\0’。