标签:float print com turn amp 格式 char int 宽度
最近在做题时遇到了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
标签:float print com turn amp 格式 char int 宽度
原文地址:http://www.cnblogs.com/LuRenJiang/p/6906333.html