#include <stdio.h>

 int main(void)
{
char s_name[]; scanf("%s", s_name);
printf("Hello, %s!\n", s_name); return ;
}

对于这段简单的代码,如果输入一个名字如:Stephen,很容易知道,其输出为:

Hello, Stephen!

这个很容易理解,但是输入更完整的名字如:Stephen Prata,那么输出结果又是什么呢?

按照上面的思路,其输出结果当然是:

Hello, Stephen Prata!

然而事实并非如此,其实际输出仍然是:

Hello, Stephen!

为什么呢?这是因为当scanf()函数读取字符串时,如果遇到空字符 空格(blank)、制表符(tab)或者换行符(newline),那么它将停止读取,也就是说,上述scanf()函数只会读取"Stephen"几个字符,而空格及其后的"Prata"将不被读取,所以最终s_name[]只会得到字符串"Stephen",最终结果就成了  Hello, Stephen!

05-08 08:04