首页 > 代码库 > C中用scanf()时应注意的一些问题
C中用scanf()时应注意的一些问题
最近在做题时遇到了scanf()的一些问题,下面说一下,scanf()中一些需要注意的地方:
先说一下scanf()的格式:
scanf(“格式控制字符串”, 地址表列);
0、格式字符串一般形式如下:
%[*][输入数据宽度][长度]类型
其中有方括号[]的项为任选项,举个*的栗子:
#include <stdio.h> int main() { int a,c; scanf("%3d%*d%d",&a,&c);//第二个%d被略过了 printf("%d\n%d",a,c); return 0; }
1、scanf函数中没有精度控制,而printf()可以,如下:
#include <stdio.h> int main() { float a; // scanf("%3.2f",&a); 错误写法 scanf("%f",&a); printf("%3.2f",a); return 0; }
2、在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束,如下:
#include <stdio.h> int main() { int a; scanf("%d",&a); printf("%d",a); return 0; }
其中数据结束在d,所以输出123
3、在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符,如下:
#include <stdio.h> int main() { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("%c%c%c",a,b,c); return 0; }
其中a为d,b为空格,c为e
4、若想在输入字符时用空格隔开则这样写:
#include <stdio.h> int main() { char a,b,c; scanf("%c %c %c",&a,&b,&c);//之间加上空格 printf("%c%c%c",a,b,c); return 0; }
注:如果输入的是整形等非字符型数据,根据2、可知道不须这么写,因为空格会被视为非格式串。
本文摘自http://c.biancheng.net/cpp/html/34.html
C中用scanf()时应注意的一些问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。