1.scanf函数
在学习C语言的时候,printf()函数和scanf()函数应该是最先学习到的两个库函数了。虽然这两个函数使用简单,但却也存在不少的坑。比如编译运行都很顺利,没有出现任何报错,但是在输入数据后回车却无法执行下一个语句。这就是scanf()使用不当造成的问题。例如这个程序:
#include<stdio.h>
intmax(inta,intb)
{
if(a > b)
returna;
else
returnb;
}
intmain()
{
inta,b,c;
scanf("%d %d\n", &a, &b);
c = max(a, b);
printf("%d is max\n", c);
return0;
}
这个程序是输入两个整数,然后经过比较之后输出最大的数字。但是输入数字后回车无效,并没有打印出结果,这时必须输入字符才能打印出结果。
出现这种情况的原因是,”\n“在scanf()中并不表示等待换行符,而是读取并放弃连续的空白字符。事实上,scanf()格式符中的任何空白字符都表示读取并放弃空白字符,而且诸如"%d"这样的格式也会自动人抛弃前面的空白。因此,