C語言中關於scanf函式的用法

2021-09-07 00:26:27 字數 1956 閱讀 6493

scanf()函式的控制串

函式名: scanf

功 能: 執行格式化輸入

用 法:

int scanf(char *format[,argument,...]);

scanf()函式是通用終端格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。

其呼叫格式為: scanf(

"《格式化字串》

",《位址表》);

scanf()函式返回成功賦值的資料項數,出錯時則返回eof。

其控制串由三類字元構成:

1.  格式化說明符;

2.  空白符;

3.  非空白符;

(a) 格式化說明符

格式字元 說明

%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有效。

(b) 空白字元

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

(c) 非空白字元

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

其他: 

在scanf函式中,我們可以使用 %c來讀取乙個字元,使用 %s 讀取乙個字串. 但是讀取字

符串時不忽略空格,讀字串時忽略開始的空格,並且讀到空格為止,因此我們只能讀取乙個單

詞,而不是整行字串.因此一般使用fgets來讀取乙個字串.其實scanf函式也可完成這樣的

功能,而且還更強大.

這裡主要介紹乙個引數,%[ ] ,這個引數的意義是讀入乙個字元集合. [ ]是個集合的標

志,因此%[ ]特指讀入此集合所限定的那些字元, 比如 %[a-z] 是輸入大寫字母,一旦遇到不在

此集合的字元便停止. 如果集合的第乙個字元是" ^ ", 這說明讀取不在" ^ " 後面集合的字

符,既遇到" ^ " 後面集合的字元便停止.注意此時讀入的字串是可以含有空格的.

eg. 輸入乙個字串, 這個字串只含有小寫字元.遇到第乙個不是小寫字元時停止.

scanf("%[a-z],str);

eg. 想輸入乙個字串, 遇到 "." 停止,可設計如下:

scanf("%[^.]", str);

使用這個引數,你可以完成許多強大的功能呦!

#include "

1.h"

#include

#include

#include

int t1(void)/*

root@ubuntu:/work/demo# ./cmd

1234 std 435

str = 1234 std 435

*/

引用:c語言中關於scanf函式的用法

c語言 中scanf詳解 

C語言中關於scanf函式的用法

華清遠見嵌入式學院講師。scanf 函式的控制串 函式名 scanf 功 能 執行格式化輸入 用 法 int scanf char format argument,scanf 函式是通用終端格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內...

C語言中scanf函式

scanf 函式每次讀取乙個字元,跳過所有的空白字元,直至遇到第1個非空白字元才開始讀取。因為要讀取整數,所以 scanf 希望發現乙個數字字元或者乙個符號 或 如果找到乙個數字或符號,它便儲存該字元,並讀取下乙個字元。如果下乙個字元是數字,它便儲存該數字並讀取下乙個字元。scanf 不斷地讀取和儲...

C語言中的scanf函式

思考 如果,我們想拿到使用者輸入的東西,怎麼辦?解決 我們需要使用 scanf 這個函式 1.scanf 的作用 在程式執行到 scanf 的時候,接收使用者輸入的一些資料,並儲存在變數之中 2.scanf 的語法 scanf 格式控制字串 變數位址列表 語義 格式控制字串裡寫佔位符,佔位符用來接收...