Scanf系列函式的高階用法

2021-06-21 16:06:21 字數 1645 閱讀 1304

scanf系列函式的高階用法

scanf 從乙個字串中讀進指定格式相符的資料,主要是用於從給定緩衝區內容輸入到變數,達到給變數賦值的目的。就是所謂的格式化輸入。

在一般情況下,我們在使用scanf時都只使用了其簡單的用法。比如:

int a = 0;

int b = 0;

scanf(「%d %d」,&a,&b);

若這段**在控制台程式(非介面程式)中,會讓使用者輸入兩個數字,讓後分別將數字的值賦值給a,b.

如果在scanf中加入等,就會有很多其它高階功能了。

比如下面這個例子:

char str[512] = ;

scanf("%[^\n]%*c", str);

這個例子表示讀到字元『\n』停止讀取,並且讀入乙個字元但是不賦值給變數。

scanf()函式是通用終端格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。其呼叫格式為: scanf("《格式化字串》",《位址表》);scanf()函式返回成功賦值的資料項數,出錯時則返回eof。其控制串由三類字元構成:

1.  格式化說明符;

%a 讀入乙個浮點值(僅c99有效)

%a 同上

%c 讀入乙個字元

%d 讀入十進位制整數

%i 讀入十進位制,八進位制,十六進製制整數

%o 讀入八進位制整數

%x 讀入十六進製制整數

%x 同上

%c 讀入乙個字元

%s 讀入乙個字串

%f 讀入乙個浮點數

%f 同上

%e 同上

%e 同上

%g 同上

%g 同上

%p 讀入乙個指標

%u 讀入乙個無符號十進位制整數

%n 至此已讀入值的等價字元數

% 掃瞄字元集合

%% 讀%符號

附加格式說明字元表修飾符 說明l/l 長度修飾符 輸入"長"資料

h 長度修飾符 輸入"短"資料

w 整型常數 指定輸入資料所佔寬度

* 星號 空讀乙個資料

hh,ll同上h,l但僅對c99有效。

1、 * 亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此資料不讀入. (也就是不把此資料讀入引數中)

2、表示a,b,c中選一,[d],表示可以有d也可以沒有d。

3、width表示讀取寬度。

4、引數的size: 常用的有hh表示單位元組size,h表示2位元組 size,其他詳見mansscanf或msdn

5、type :這就很多了,就是%s,%d之類。

2.  空白符;

空白字元空白字元會使scanf()函式在讀操作中略去輸入中的乙個或多個空白字元,空白符可以是space,tab,newline等等,直到第乙個非空白符出現為止。

3.  非空白符;

非空白字元乙個非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。

4.scanf的結束

scanf()函式接收輸入資料時,遇以下情況結束乙個資料的輸入:(不是結束該scanf函式,scanf函式僅在每乙個資料域均有資料,並按回車後結束)。

①  遇空格、「回車」、「跳格」鍵。

②    遇寬度結束。

③  遇非法輸入。

scanf函式的用法

scanf 通過鍵盤將資料輸入到變數中 兩種用法 用法一 scanf 輸入控制符 輸入引數 功能 將鍵盤輸入的字元轉化為輸入控制符所規定格式的資料,然後存入以輸入引數的值為地質的變數 用法二 scanf 非法輸入控制符 輸入控制符 輸入引數 功能 將從鍵盤輸入的字元轉化為輸入控制符所規定格式的資料,...

scanf 函式用法

雖然有人說在大型程式設計中永遠不要使用scanf 但是對於習慣用c的人和參加 acm icpc的人,scanf 還是用的比較多的,而且用好了用起來也很方便。下面整理一點兒平時常需要用到而可能有些人一直理不清的一些知識 一般常識 scanf 函式的一般格式為 scanf 格式字串 輸入項首位址表 sc...

c中scanf函式用法

初看scanf時,覺得還是蠻簡單的,但當深入學習後,才發現裡面有很多小細節值得我們去注意。首先,看看scanf的基本格式 scanf 格式化字串 位址表 scanf 函式返回成功賦值的資料項數,出錯時則返回eof。我們輸入的資料大體上可以分為幾個型別 格式化說明符 空白符 空白符包括 空格,製表符,...