scanf中的 n c格式

2021-09-20 16:28:55 字數 2126 閱讀 9663

scanf 

語法: 

#include

int scanf( const char *format, ... );

類似函式有

int scanf(const char *format, ...);

int fscanf(file *stream, const char *format, ...);//指定輸入流

int sscanf(const char *str, const char *format, ...);//指定快取區

scanf()函式根據由format(格式)指定的格式從stdin(標準輸入)讀取,並儲存資料到其它引數. 它和printf()有點類似. format(格式)字串由控制字元,空白字元和非空白字元組成. 控制字元以乙個%符號開始,如下:

控制字元 說明 

%c 乙個單一的字元 

%d 乙個十進位制整數 

%i 乙個整數 

%e, %f, %g 乙個浮點數 

%o 乙個八進位制數 

%s 乙個字串 

%x 乙個十六進製制數 

%p 乙個指標 

%n 乙個等於讀取字元數量的整數 

%u 乙個無符號整數 

% 乙個字符集 

%% 乙個精度符號

1.scanf()讀取匹配format(格式)字串的輸入. 當讀取到乙個控制字元, 它把值放置到下乙個變數. 空白(tabs, 空格等等)會跳過. 非空白字元和輸入匹配, 然後丟棄. 如果是乙個在%符號和控制符間的數量, 那麼只有指定數量的字元轉換到變數中. 如果scanf()遇到乙個字符集(用%控制字元表示), 那麼在括號中的任意字元都會讀取到變數中. scanf()的返回值是成功賦值的變數數量, 發生錯誤時返回eof. 

2.scanf()函式的一般格式為:scanf("格式字串",輸入項首位址表)

3.scanf的格式控制的一般形式為:%[*][寬度][f|n][h|l]型別字元

中的控制字元為可選項 

4."*"表示該輸入項讀入後不賦予任何變數,即跳過該輸入值。

5."寬度"表示輸入讀入字元的長度,對於整型表示擷取相應寬度的數字賦給後面列表中的相應變數;對於字元型表示讀入相應長度的字元後把第乙個字元賦給相應的變數,其餘的自動捨棄。例如scanf("-=",&a, &b);如果輸入為12345則將12賦給a,將45賦給b;scanf(",<",&a, &b);如果輸入為12345則將'1'賦給a,將'3'賦給b .

"%s" 整個輸入作為乙個串,並設定末尾的'\0'

"%ns",n為整數,讀入的串最長不超過n,然後在末尾補'\0'

%nf 讀入的浮點數最多有n位整數,位數多於n,會截斷。

"%n[a-z]" 讀入最多n個字元,如果遇到非a-z的字元,停止

"%[^=]" 讀入任意多的字元,直到遇到"="停止

"%n[^=]" 讀入"="號前的至多n 個字元

6.f 、n、h、l分別表示遠指標、近指標、短整和長整型。

7.對於輸入字串還有一些比較有用的控制。

例如經常需要讀入一行字串,而這串字元裡面可能有空格、製表符等空白字元,如果直接用%s是不可以的,於是有些人就想到用gets(),當然這也是一種選擇,但是懂c的人基本上都知道gets()是乙個很危險的函式,而且很難控制,特別是與scanf()交替使用時前者的劣勢更是一覽無餘,所以gets()一般是不推薦用的,其實用%[^\n]就可以很好的解決這個問題了,^表示"非",即讀入其後面的字元就結束讀入。這樣想讀入一行字串直接用scanf("%[^\n]%*c",str);就可以了,

%*c的作用是讀入\n,否則後面讀入的將一直是\n。

所有對%s起作用的控制都可以用%,比如%[0-9]表示唯讀入'0'到'9'之間的字元,%[a-za-z]表示唯讀入字母,

'-'是範圍連線符,當然也可以直接列出你需要讀入的字元。

如果你只需要讀"abc"裡面的字元就可以用%[abc] (或者%[cab]、%[acb]、%[a-c]、%[c-a].....),

如果想讀入某個範圍之外的字串就在前面加乙個'^',如:%[^a-z]就表示讀入小寫字母之外的字元。

例如從鍵盤輸入的"1235ab86"中讀取1235、86給n,有如下方法:

#include

bool skip()

void main()

輸出為:1235

scanf與printf的格式

scanf的格式 1.scanf 輸入控制符 輸入引數 2.scanf 輸入控制符非輸入控制符 輸入引數 scanf的功能 將從鍵盤輸入的字元轉化為 輸入控制符 所規定格式的資料,然後存入以輸入引數的值為位址的變數中。scanf d i 其中 是乙個取位址運算子,後面加變數名表示 該變數的位址 所以...

scanf和printf的格式

scanf函式的一般語法格式為 scanf 格式佔位符列表,變數位址列表 常用的格式佔位符有 d 整型數 f 浮點型數 等。scanf 函式是通用終端格式bai化輸入函式,du它從標準輸入裝置 鍵盤 讀取輸zhi入的資訊。可以讀入任dao何固有型別的資料並自動把數值變換成適當的機內格式。其呼叫格式為...

scanf與printf的格式

一.scanf 1.該函式可以獲取任意資料型別的輸入,但是必須指定輸入格式 2.該函式可以連續讀入 3.按格式輸入 輸入值以 逗號分隔 scanf d,d num1,num2 輸入值以 冒號分隔 scanf d d num1,num2 輸入值以 斜槓分隔 scanf d d num1,num2 二....