发布网友 发布时间:2024-05-08 02:50
共5个回答
热心网友 时间:2024-06-04 20:47
对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。
所以“A.scanf("%s%s",&a,&b)”中,变量a、b多携带了“&”操作符,是错误的。而对于gets()函数的使用,其中参数为字符串变量(字符串数组名或字符串指针),所以“B.gets(a); gets(b);”是正确的用法。
扩展资料:
gets()与scanf()在字符串输入的使用差异:
gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
也就是说,gets()函数读取到\n(输入的回车)是会停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。
参考资料来源:百度百科-scanf (计算机语言函数)
参考资料来源:百度百科-gets
热心网友 时间:2024-06-04 20:48
我写的代码:
#include<stdio.h>
void main()
{
char a[100],b[100];
scanf("%s%s",&a,&b);
printf("%s\n%s\n",a,b);
}
这样写输出没问题,我们学校考试题库也认为scanf("%s%s",&a,&b);这是对的。
热心网友 时间:2024-06-04 20:50
热心网友 时间:2024-06-04 20:51
B正确热心网友 时间:2024-06-04 20:51
A错,是因为数组名就是地址,所以无需多此一举再在地址前加一个&来表示地址