Scanf
使用scanf函数可以从标准输入设备接受输入。对我们而言,标准输入设备一般就是键盘。虽然scanf函数可以做许多事情,但是除了最简单的工作外,一般而言并不很可靠。原因是它不能很好地处理人为错误。不过,对于简单的程序来说,scanf还是很合适的,而且易于使用。
scanf的最简单用法是像这样:
scanf("%d", &b);
该程序将读取用户从键盘输入的一个整数(和在printf中一样,%d代表整型,因此b必须声明为int),并将其存入b。
scanf函数使用的占位符和printf的相同:
- int用%d
- float用%f
- char用%c
- 字符串(后面会讨论)用%s
在使用scanf时,您必须在其变量前加上&。为什么要这么做的原因,在您学习指针后会很清楚。&符号很容易忽略,而一旦您忘记添加&,几乎每次运行程序都会崩溃。
通常来说,最好像在这里举的例子一样使用scanf函数——读取键盘输入的单个数值。读取多个数值的时候,请多次调用scanf函数。不过,在任何一个实际的(而不是用来演示的)程序中,您将不会使用scan函数,而是使用gets或者fgets函数来一次一整行地阅读文本。然后您会分析这一行,并读取它的值。这么做的原因是,您可以检测到输入的错误,并做恰当的处理。
要完全理解printf和scanf函数,需要一些练习。一旦掌握了,它们非常有用。
试试这个!
修改这个程序,使它能接受3个数值,而不是2个,并把3个数值相加。
#include int main(){ int a, b, c; printf("输入第一个值:"); scanf("%d", &a); printf("输入第二个值:"); scanf("%d", &b); c = a + b; printf("%d + %d = %d\n", a, b, c); return 0;}试着在上述程序中随意删除或添加字符或者词语,看编译器对这些错误如何反应。
比如说,在上述程序的第一行删除b变量,看看当您忘记了声明变量时,编译器会怎么办。删除一个分号,看会发生什么。或者漏掉一半大括号。删掉主函数旁边的一个圆括号。尝试每一种错误,然后通过编译器运行程序,看会发生什么。通过模拟这些错误,您会了解不同种类的编译器错误,并在当您真正地犯了这些错误的时候,更容易找到这些输入错误。
C常见错误
用错大小写。C语言区分大小写,因此Printf和PRINTF都不对,必须是printf。
在scanf中忘了使用&。
在printf或scanf的格式声明中参数太多,或者太少。
在使用变量的时候没有事先声明。