函式原型:  int  scanf ( const char * format, ... );

引數說明: %[*][width][modifiers]type
                %[*][寬度][長度修飾]資料型態

傳回值:成功配對之引數數目,失敗時將傳回 EOF

1. 資料型態 (%[*][寬度][長度修飾]資料型態 ) 必填欄位 

(1.1) 字元/字串

   %c, %C : 字元,  char c;
       %s : 字元陣列, char buffer[MAX_PATH];
       %S : 字元陣列(Unicode), wchar buffer[MAX_PATH];

(1.2) 整數

     %d, %i : 10進制整數  , int x; [lemma] 

         %u : 10進制無號數, unsigned int x;
         %o : 8進制無號數,  unsigned int x;
     %x, %X : 16進制無號數, unsigned int x;
%lld, %I64d : long long int, __int64 輸入型態 (for MSVC)
%ull, %I64u : unsigned long long int  輸入型態

[lemma] %d : dec; %i : integer,於 scanf 時有部份差異 (%d 只接受10進位, %i 可接受指定進位,如 0x23, 045),但於 printf 時 %d, %i 並無顯著差異 (感謝 Jacob Lee 補充指導)

(1.3) 浮點數

   %e, %E : 浮點數使用科學符號表示之,指數將帶正負號, float x,doubley;
       %f : 單精度浮點數(預設輸出精度6位), float x;
      %lf : 倍精度浮點數(預設輸出精度6位), double x;
%llf, %LF : 雙倍精度浮點數(預設輸出精度6位), long double x;
   %g, %G : 由系統決定是否採科學符號表示。

 

2. 寬度 %[*][寬度][長度修飾]資料型態 ) 選填欄位net

 

           指定一次最多可讀多少字元進來。

3. 長度修飾 ( %[*][寬度][長度修飾]資料型態) 選填欄位

      %h : 將數字視為 short int (%hd, %hi) 或 unsigned int (%hu),
           此修飾只對整數型態之 %hi, %hd, %ho, %hu, %hx, %hX 有效。
      %l : 將數字視為 long  int (%ld, %li) 
           或 unsigned long int (%lu, %lo, %lx, %lX) 
           或 double (%le, %lf, %lg)
      %L : 此修飾只對浮點數型態之 long double 有效, 可用於修飾
           %Le, %LE, %Lf, %Lg, %LG。

4. * (  %[*][寬度][長度修飾]資料型態 ) 選填欄位 

     只讀取該變數,但不儲存下來。ex:
     int a1, a2, a4;
     scanf("%d%d%d%*d%d", &a1, &a2, &a4);
     若使用者輸入 1 2 3 4,則 1 設給 a1; 2 設給 a2; 3則配到 %*d, 故不儲存; 4 則設給 a4。

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()