关于C中scanf()函数读取字符串的问题
1 #include <stdio.h>
2
3int main(void)
4 {
5char s_name[20];
6
7 scanf("%s", s_name);
scanf用法c++8 printf("Hello, %s!\n", s_name);
9
10return0;
11 }
对于这段简单的代码,如果输⼊⼀个名字如:Stephen,很容易知道,其输出为:
Hello, Stephen!
这个很容易理解,但是输⼊更完整的名字如:Stephen Prata,那么输出结果⼜是什么呢?
按照上⾯的思路,其输出结果当然是:
Hello, Stephen Prata!
然⽽事实并⾮如此,其实际输出仍然是:
Hello, Stephen!
为什么呢?这是因为当scanf()函数读取字符串时,如果遇到空字符空格(blank)、制表符(tab)或者换⾏符(newline),那么它将停⽌读取,也就是说,上述scanf()函数只会读取"Stephen"⼏个字符,⽽空格及其后的"Prata"将不被读取,所以最终s_name[]只会得到字符串"Stephen",最终结果就成了 Hello, Stephen!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论