scanf运行的原理:1.当用户输入内容以后,用户输入的内容会被存放到scanf的输入缓冲区中,然后,scanf函数会根据格式控制的字符的要求,送输入缓冲区一次取它想要的内容, 如果 从缓冲区中取得内容和我们的格式要求一致,则把值存放到变量中;如果格式不一致,则不修改变量的值; 2.如果scanf缓冲区中还有内容,则scanf不会提示我们再次输入 例如 :scanf(”%d%c%d“,&a,&ch,&b)加入你输入12 空格 a 空格 45 ;它会依次取值12 空格 和a 但是a是字符不是%d格式, 格式不相符就不会取值了; int a=1 b=-1 char ch=‘a’ scanf("%d",&a); scanf("%c",&ch); scanf("%d",&b); printf("%d,%c,%b",a,ch,b); 如果你想要输出a=12 ch为a b为45;这时候如果你直接输出三次 12 a b 不会显示出来因为scanf中的缓冲区中有五个中间包括了两个enter 如果想要按理想的输出三个数 可以在scanf("%c",&ch);下面在输入一次scanf("%c",&ch);这样scanf("%c",&ch)就会吸收掉中间的那个空格 b也会直接在缓冲区中找到45这个整数而忽略掉中间的那个空格; 看完这些 你肯定就懂了 |