黑马程序员技术交流社区
标题:
对scanf的理解
[打印本页]
作者:
蓝蓝
时间:
2015-7-15 02:37
标题:
对scanf的理解
Scanf
一、定义
Scanf——Scan Format的缩写、中文为格式输入
它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数头文件: #include <stdio.h>
函数原型:int scanf(const char *format[,argument,…]);
调用形式: scanf("<格式说明字符串>",<变量地址>);
变量地址要求有效,并且与格式说明的次序一致。
二、返回值
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
三、注意问题
(1) 对于字符串数组或字符串指针变量,由于数组名和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。
例:#include<stdio.h>
int main(void)
{
char str[10],*p;
p=str;
scanf("%s",str);
scanf("%s",p);
printf("%s",str);
return 0;
}
(2) 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
(3) scanf()函数中没有精度控制。
如: scanf("%3.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。
(4) scanf中要求给出变量地址,如给出变量名则会出错
如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。
(5) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
(6) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
作者:
562413895@qq.co
时间:
2015-7-16 21:17
总结的好全面啊,值得学习
作者:
tingyuyisheng
时间:
2015-7-16 22:47
值得大家学习
作者:
cjhsf051223
时间:
2015-7-16 22:58
多总结 大家多交流经验啊 学习!
作者:
liaohaojin
时间:
2015-7-16 23:02
不错不错~~
作者:
382780396
时间:
2015-7-16 23:26
加油,支持
作者:
蓝蓝
时间:
2015-7-17 00:34
谢谢大家的支持!!!:hug:hug::hug:
作者:
yongaidongbing
时间:
2015-7-17 01:09
。。。。。。。。。。。。。。。。。
作者:
huguozhang
时间:
2015-7-17 02:47
学习了~~~
作者:
peng_gavin
时间:
2015-7-17 06:43
总结的很好,赞一个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2