C语言中scanf与gets的疑惑,请高手们帮解决

当我要输入一个字符串的时候, 例如: char str[100]; scanf("%s",str); 当我运行了程序,输入一个字符串比如是"How are you?" 然后用strlen(str)来测试字符串的长度,得到的结果是3 然而当我使用的代码是 char str[100]; gets(str); 当我运行了程序,输入一个字符串比如是"How are you?" 然后用strlen(str)来测试字符串的长度,得到的结果是12 为什么会有这种区别?

第1个回答  2019-10-06
用%s输入字符串的时候,空格、回车符、tab符作为输入数据的分隔符不能被读入,当遇到这些分隔符的时候,系统认为输入结束。从键盘输入how
are
you?,实际只是把how输入到了数组,因此,用%s输入字符串的时候不能带有空格、回车符、tab符。而专门的字符输入函数gets就可以输入。当然了,也可以不用gets输入,办法就是初始化,既是:char
str[100]="how
are
you?"
相似回答