1. 程式人生 > >C++ 格式化輸入函式scanf()

C++ 格式化輸入函式scanf()

【功能】

格式化輸入任意資料列表

【語句格式】

scanf("格式控制符",地址列表);

①格式控制符:由%與格式符構成,將要輸入的字元按指定格式輸入

②地址列表:要輸入的各變數地址

【基本格式符】

  1. d:輸入十進位制整數
  2. u:輸入無符號整數
  3. o:輸入八進位制整數
  4. x:輸入十六進位制整數
  5. c:輸入單個字元
  6. s:輸入字串(輸入時以非空格開始,空格結束,自動填補成以'\0'為結尾)
  7. f:輸入實數
  8. e:輸入實數

【附加格式符】

  1. l:可用於整型、實型(例:%ld、%lf
  2. h:可用於整型(例:%hd)
  3. *:對應輸入量不賦給一變數
  4. 域寬(一個整數):指定要輸入所佔的列寬(例:%4d)

【例項】

  1.  *的使用
    #include<cstdio>
    int main()
    {
        int a,b;
        scanf( "%d %*d %d" , &a , &b );//輸入1 2 3
        printf( "a = %d , b = %d \n" , a , b );//輸出a=1,b=3
        return 0;
    }
  2. 域寬格式符的使用
    #include<cstdio>
    int main()
    {
        int a,b;
        scanf( "%4d %4d" , &a , &b );//輸入1234567
        printf( "a = %d , b = %d \n" , a , b );//輸出a=1234,b=567
        return 0;
    }
  3. %s的使用
    #include<cstdio>
    int main()
    {
        char st[40];
        scanf( "%s" , st );//輸入Hello World!
        printf( "%s\n" , st );//輸出Hello
        return 0;
    }
    
  4. 非格式符的使用
    #include<cstdio>
    int main()
    {
        int a,b,c;
        scanf( "%d , %d , %d ", &a , &b ,&c );//因有間隔符“,”,故應輸入1,2,3,而非此前的1 2 3
        printf( "a = %d , b = %d , c = %d\n" , a , b , c );
        return 0;
    }
  5. 空格的應用
    #include<cstdio>
    int main()
    {
        /*
            輸入要求為: A   B   C   D   E時
            採用格式化輸入中的空格,可以代表換行、Tab、空格
        */
        char str[5];
        for(int i=0;i<10;i++)
            scanf( "%ch " , &str[i] );
        scanf( "%s\n" , str );
        return 0;
    }