解释
gets(s)函数与 scanf("%s",&s) 相似,但不完全相同,使用scanf("%s",&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
()
()
1.不同点:
2.相同点:
例1:
#include <>
int
{
char ch1[10],ch2[10];
scanf("%s",ch1);
gets(ch2);
}
依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。
程序2:
测试一输入:
Hello word(enter)
输出:
Hello
world!
#include <>
int main()
{
char str1[20], str2[20];
gets(str1);
gets(str2);
return 0;
}
测试:
Helloworld! [ 输入 ]
Helloworld! [ 输出 ]
12345 [ 输入 ]
12345 [ 输出 ]
【分析】显然与上一个程序的执行情况不同,这次程序执行了两次从键盘的读入,而且第一个 字符串 取了 Helloworld! 接受了空格符,而没有像上一个程序那样分成了两个 字符串 !所以 如果要读入一个带空格符的字符串时因该用gets(), 而不宜用scanf()!