国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言scanf()函數:格式化輸入函數

2019-11-08 03:23:23
字體:
來源:轉載
供稿:網友

scanf() 函數用來格式化輸入數據,即按用戶指定的格式從鍵盤上把數據讀入到指定的變量中。其原型為:int scanf ( char * format [ ,argument, … ]); 【參數】format為格式化控制字符串,可以由三類字符構成。

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 同 h,但僅對C99有效 ll 同 l,但僅對C99有效

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

3) 非空白字符 一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符。

argument 為需要讀入的所有變量的地址。

注意,是變量地址,而不是變量標識符: 如果是一般的變量,通常要在變量名前加上”&”取得地址,但輸出時是用變量名。 如果是數組,用數組名就代表了該數組的首地址,輸出時也是用數組名 如果是指針,直接用指針名本身,不要加上“*”,輸出時也用該指針即可。

【返回值】成功則返回被賦值的參數的個數。如果 format 和 argument 匹配錯誤,或者遇到結束符,那么返回值可能小于參數的個數。

如果讀取發生錯誤,將會返回 EOF,并設置錯誤標識,后續可以通過 ferror() 檢測。

如果遇到結束符,將會設置文件結束標識,后續可以通過 feof() 檢測。

如果在讀取寬字符的時候發生編碼錯誤,那么將會把 errno 設置為 EILSEQ。

【實例】下面的代碼將演示 scanf() 可以讀取的數據類型。

#include <stdio.h>int main (){ char str [80]; int i; PRintf ("Enter your family name: "); scanf ("%79s",str); printf ("Enter your age: "); scanf ("%d",&i); printf ("Mr. %s , %d years old./n",str,i); printf ("Enter a hexadecimal number: "); scanf ("%x",&i); printf ("You have entered %#x (%d)./n",i,i); return 0;}

運行結果為: Enter your family name: Soulie Enter your age: 29 Mr. Soulie , 29 years old. Enter a hexadecimal number: ff You have entered 0xff (255).

又如,記錄帶空格的字符串,然后輸出(已經注釋的部分為要求輸入三個整數,然后逐個打印出來)。

#include<stdio.h>int main(){ /*int a,b,c; puts("Input a,b,c:"); scanf("%d,%d,%d",&a,&b,&c); printf("/n%d,%d,%d/n",a,b,c);*/ // 可以輸入帶空格的字符串*/ char str[80]; scanf("%[^/n]",str); // 格式化輸入 printf("%s/n",str); // 格式化輸出 return 0;}

【運行結果】 sdf ef13 sdf ef13

scanf() 函數是初學者接觸最多的函數,相信大家都 已非常熟悉,這里不再贅述,但是它還有一個許多人都沒有注意 到的功能,即可以記錄帶空格的字符串,注意學習例子中指定格式的方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡水市| 杂多县| 乌拉特后旗| 藁城市| 巧家县| 咸阳市| 繁峙县| 如皋市| 衢州市| 蒲城县| 太保市| 盘山县| 桂阳县| 永安市| 晋城| 高清| 丰镇市| 辰溪县| 新宾| 芦山县| 邢台县| 江山市| 南和县| 古丈县| 洪洞县| 赤峰市| 鄂托克旗| 明光市| 新和县| 进贤县| 阜阳市| 汉寿县| 平陆县| 昆明市| 南华县| 三门县| 邵武市| 威远县| 元朗区| 临洮县| 临漳县|