scanf复习
scanf是C中的一个输入函数用户可以用指定的格式从键盘上输入到指定的变量。
用法
比如scanf(%d,a)表示输入一个可选有符号的十进制整数,如果输入10,则代表变量a的值为10:
结果为
格式说明符
d 读入可选有符号(可选有符号表示输入时可以带符号也可以不带符号,不带符号则视为非负)十进制整数。
s 读入一个的字符序列,后面会加上空字节。
x 读入可选有符号十六进制整数。输入格式应该像strtoul函数的base实参为16调用时识别的字符序列一样。
c 读入域宽指定的数目个字符组成的字符序列(后面不会加上空字节),如果省略宽度则读入单字符。如%c或%1c读入单字符,%2c读入两个字符(后面不会加上空字节),以此类推。(来自搜狗百科)
容易忽略的地方
在使用scanf时一开始包括我在内的许多同学容易缺少一个&符号,这样会使代码在编译时是指出无指针的错误,这需要牢记。
在循环中需要用到scanf来先输入字符型数据再输入数值型数据时,则需要注意输入数值后,不管是回车还是空格都会被下一轮的scanf给吸收,导致我们无法输入下一个字符型。
我解决的方法是在输入完数值型数据后再在下面补一句:
getchar();
getchar()函数是读取键盘输入的一个字符。
再有就是scanf中如果除了声明格式外还有其他字符,则需要在输入数据时在对应位置输入相同字符如:
scanf(“a=%d,b=$d,c=%d”,&a,&b,&c);
再输入数据时需要输入相同字符如:
a=10,b=5,c=1
如果直接输入10 5 1编译时就会报错。