scanf("格式化字符串",地址列表);ios
<1>若是scanf产生了错误,那么返回0ide
注意:spa
<1>scanf寻找数据起始位置时,跳过空白字符(空格、回车、制表符等),即遇到空白符认为结束一次输入操做字符串
<2>scanf中%e、%g、%f能够互换it
<3>scanf从左往右依次分析格式字符串。若是遇到一个不符合的字符,就把这个字符放回,下次再读io
如:class
1-20.3-4.0e3stream
%d%d%f%f数据
i = 1tab
j = -20
x = 0.3
y = -4.0e3
<2>scanf不会读取最后的换行符,因此有时候用scanf("%*c")将换行符读出,防止后面的读取
如:
printf("请输入c1:");
scanf("%c",&c1);
printf("请输入c2:");
scanf("%*c");
scanf("%c",&c2);
<3>scanf("%*[^\n]");
*表示忽略读取到的内容
[^\n]:任何非\n的字符,将任何\n的字符所有读走
i和d再printf和scanf中的区别:
<1>printf中没有区别
<2>scanf中d只能匹配十进制数字;i能够匹配八进制 十进制 十六进制
<4>组织格式化输入输出字符串:
fprintf(&iostream, "格式化字符串", 表达式列表);
fscanf(...);
&iostream:能够是stdout/stdin
<5>字符缓冲的问题见 输入、输出缓冲区