......
scanf的使用
程序1
scanf的細節
// 15-1scanf的細節 #include <stdio.h> #pragma warning(disable:4996); main() { int i1, i2; long l1, l2; float f1, f2; double d1, d2; printf("請輸入:\n"); scanf("%d%d", &i1, &i2); //鍵盤輸入兩個整型變量 scanf("%ld%ld", &l1, &l2); //輸入兩個長整型變量 scanf("%f%f",&f1,&f2); //輸入單精度浮點數型到變量 scanf("%lf%lf", &d1, &d2); //輸入雙精度浮點型到變量 printf("以下是輸出:"); printf("%d\n%d\n", i1, i2); printf("%ld\n%ld\n", l1, l2); printf("%f\n%f\n", f1, f2); printf("%lf\n%lf\n", d1, d2); }
※可以指定輸入數據所占列數,系統自動按要求截取所需數據。如:
scanf(“%3d%3d”,&a,&b);
若輸入:
5201314(回車)
系統自動將520賦給a,131賦給b。
※與printf不同的是,輸入數據時不能規定精度,如:
scanf(“%7.2f”,&n); /*n為浮點型*/
若輸入:
123456(回車)
n的值並不是1234.56,而是亂碼。
※如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數據時在對應位置應輸入與這些字符相同的字符。如:
scanf(“%d,%d”,&a,&b);
輸入時應用如下形式:
3,4
如果用:
3(回車)4
變量b將得不到數據。
如果是:
scanf(“%d□□□%d”,&a,&b); // □ 代表空格
輸入時應用如下形式:
3□□□4
程序2
scanf格式輸入
// 15-2scanf的格式輸入 #include <stdio.h> #pragma warning(disable:4996); main() { int i1, i2; scanf("%d,%d", &i1, &i2); //如果兩個%d中間加符號,輸入端兩個數中間也一定要加符號 scanf("i1=%d i2=%d", &i1, &i2); //輸入端輸入應為:i1=5 i2=8 輸出結果為 5 8 printf("第一個數是:%d\n", i1); printf("第二個數是:%d\n", i2); }
※在輸入數據時,遇以下情況時該數據認為結束:
(1)遇空格,或按“回車”或“跳格”(TAB)鍵
(2)按指定的寬度結束,如%3d,只取3列。
(3)遇非法輸入。
(4)%c只取1列。
如:
scanf(“%2d%d%f”,&a,&b,&c);
若輸入
12345.26 78
3個變量的結果:a為12,b為345,c為0.26
※在輸入long型數據時,格式字符必須是%ld;輸入double時,格式字符必須是%lf。否則得不到正確的數據