next up previous contents
Next: scanf 數值問題說明 Up: 格式化輸入輸出 Previous: scanf 字元字串輸入   Contents

scanf 數值問題

  1. scanf 讀取數字實例
    [dywang@dyw219 zzz]$ vim fstdio7.c
    [dywang@dyw219 zzz]$ cat fstdio7.c 
    #include <stdio.h>
    
    main() {
    	int a;
    	printf("Enter a number: ");
    	scanf("%d", &a);
    	printf("a=%d\n", a);
    }
    
  2. 編譯成功
    [dywang@dyw219 zzz]$ gcc -o fstdio7 fstdio7.c
    
  3. 執行結果:輸入 345,正常輸出。
    [dywang@dyw219 zzz]$ ./fstdio7
    Enter a number: 345
    a=345
    
  4. 執行結果:輸入 qwe123,數字前有英文字母,輸出 0。
    [dywang@dyw219 zzz]$ ./fstdio7
    Enter a number: qwe123
    a=0
    
  5. 執行結果:輸入 456rty,數字後有英文字母,輸出 456,後面的非數字自動不處理。
    [dywang@dyw219 zzz]$ ./fstdio7
    Enter a number: 456rty
    a=456
    
  6. 執行結果:輸入 " 897yui",數字前有空白後有英文字母,輸出 897,前面的空白及後面的非數字自動不處理。
    [dywang@dyw219 zzz]$ ./fstdio7
    Enter a number:    897yui
    a=897
    
  7. 執行結果為何是這樣?



De-Yu Wang 2019-11-14