为什么scanf函数只读到字符串的空格键为止,而printf函数却一直输出到最后;比如:输入同样的字符串 abc asdcnd dasdsascanf只读到abc;而对于printf函数会把abc asdcnd dasdsa输出;请问这是为什么?它们区分字符串结束标志有什么区别吗?#include <stdio.h>int main(){ char string[100]={}; scanf("%s",string); printf("NO.1 %s\n",string); gets(string); printf("NO.2 %s\n",string); printf("C=%c,d=%d\n",string[10],string[10]); printf("C=%c,d=%d\n",string[0],string[0]); printf("C=%c,d=%d\n",string[5],string[5]); return 0;}结果:如下图所示。
嗯,谢谢!我大概清楚了,scanf("%s",string);读到分隔符为止,封隔符可以是空格、回车、Tap键等。而printf输出到\0为止。另外,回车键的键码为“\n”=10,空格的键码=32,所以输出的最后一个字符是gets函数后面自动添加。T-T
追答scanf("%[^\n]", str) //读取到回车为止, 可以读取空格
scanf("%[^#]", str) //读取到'#'为止, 空格,回车都可读取, 也就是读取多行字符串
哈哈!谢谢,大神指导!
本回答被提问者采纳嗯,谢谢!