前一个回答中我误将 \0 写成了 \n。我想再详细说明下 scanf 在读字符串时的行为:当格式化指示符为 %s 时,scanf 就会将输入的内容视为字符串,它会一个一个地接收字符直到你输入了任何一个“空白字符”——回车、空格、tab 都算是空白字符——它就知道你字符串输入完了,并且会自动再添加一个'\0'。 这是因为 C 规定字符串是以 '\0' 结尾的,所以它才自动添加这个 \0。也就是说,就算我们输入的是 a b [空格],这个字符串 a 得到的是 a b \0,而不是 a b \n。另外,我们刚输入的这个用来表明字符串结束的空白字符(不管是回车、空格还是tab),不会被 scanf 读取走! 所以如果后面继续用 scanf 读 %c 的话,是会读到这个空白字符的,这一点需要注意!。