1. 程式人生 > >C語言學習之scanf函式

C語言學習之scanf函式

附加格式說明字元:
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
         字元                                   說明
  ——————————————————————————————————————
            l           用於輸入長整型資料(可用%ld,%lo,%lx)以及double型資料(用%lf或%le)
  ——————————————————————————————————————
            h           用於輸入短整型資料(可用%hd, %ho, %hx)
  ——————————————————————————————————————
        域寬         指定輸入資料所佔寬度(列數),域寬應為正整數
  ——————————————————————————————————————
          *           表示本輸入項在讀入後不賦紿相應的變數
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

------------------相關-------------------
輸入資料流分隔
  ①根據格式字元的含義從輸入流中取得資料,當輸入流中資料型別與格式字元要求不符時,就認為這一項結束。例如:
  scanf( "%d%c%f", &a, &b, &c);
  如果輸入如下資訊:
  1234r1234.567
  則scanf函式在接收資料時發現“r”型別不匹配,於是把“1234”轉換成整型賦值給a,把“r”賦給變數b,最後把“1234.567”轉換成實型資料賦給c。
  ②根據格式項中指定的域寬分隔出資料項。如語句:
  scanf( "%2d%3f%4f", &a, &b, &c);
  如果輸入如下資訊:
  123456789012345
  則scanf函式在接收資料時根據域寬把12賦值給a,345賦值給b,6789賦值給c。
  ③隱示分隔符。空格、跳格符('\t')、換行符('\n')都是C語言認定的資料分隔符。
  ④顯示分隔符。在scanf函式的兩個格式說明項間有一個或多個普通字元,那麼在輸入資料時,在兩個資料之間也必須以這一個或多個字元分隔。如語句:
  scanf( "a=%d,b=%f,c=%f", &a, &b, &c);
  則輸入資料應該為:
  a=1234,b=67.8,c=98.123

---------------------------------------
關於scanf函式的進一步說明:
  ①scanf函式中的“格式控制”後面應當是變數地址,而不應是變數名。例如,如果a、b為整型變數,則
  scanf( "%d,%d", a, b);
  是不對的,應將“a, b”改為 “&a, &b”。
  ②如果在“格式控制”字串中除了格式說明以外還有其它字元,則在輸入資料時應輸入與這些字元相同的字元。例如:
  scanf( "%d,%d", &a, &b);
  輸入時應輸入:3,4。3與4之間的逗號應與scanf函式中的“格式控制”中的逗號相對應,輸入其它符號是不對的。
  ③在用“%c”格式輸入字元時,空格字元和轉義字元都作為有效字元輸入。
  scanf( "%c%c%c", &c1, &c2, &c3);
  如輸入:a b c 。字元 'a' 賦給c1,字元(空格)'     ' 賦給c2,字元 'b'     賦給c3。
  ④ scanf        中不使用U說明符.對unsigned型資料用d、o、x說明符輸入.