scanf 函數(shù)最主要的用法是:
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),城口企業(yè)網(wǎng)站建設(shè),城口品牌網(wǎng)站建設(shè),網(wǎng)站定制,城口網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,城口網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
scanf("輸入控制符", 輸入?yún)?shù));
函數(shù)原型:int?scanf(const?char?*?restrict?format,...);
函數(shù) scanf() 是從標(biāo)準(zhǔn)輸入流stdin (標(biāo)準(zhǔn)輸入設(shè)備,一般指向鍵盤)中讀內(nèi)容的通用子程序,可以說明的格式讀入多個(gè)字符,并保存在對(duì)應(yīng)地址的變量中。
擴(kuò)展資料:
函數(shù)的第一個(gè)參數(shù)是格式字符串,它指定了輸入的格式,并按照格式說明符解析輸入對(duì)應(yīng)位置的信息并存儲(chǔ)于可變參數(shù)列表中對(duì)應(yīng)的指針?biāo)肝恢?。每一個(gè)指針要求非空,并且與字符串中的格式符一一順次對(duì)應(yīng)。
發(fā)展:
使用scanf函數(shù)進(jìn)行輸入,必須指定輸入的數(shù)據(jù)的類型和格式,不僅繁瑣復(fù)雜,而且很容易出錯(cuò)。C++保留scanf只是為了和C兼容。
以便過去用C語言寫的程序可以在C++的環(huán)境下運(yùn)行。C++的編程人員都愿意使用cin進(jìn)行輸入,很少使用scanf。
但是scanf有一個(gè)明顯的優(yōu)點(diǎn),速度比cin函數(shù)快。
參考資料:
百度百科-scanf (計(jì)算機(jī)語言函數(shù))
int
__cdecl
scanf
(
const
char
*format,
...
){
va_list
arglist;
va_start(arglist,
format);
return
vscanf(_input_l,
format,
NULL,
arglist);}int
__cdecl
vscanf
(
INPUTFN
inputfn,
const
char
*format,
_locale_t
plocinfo,
va_list
arglist
)/*
*
stdin
'SCAN',
'F'ormatted
*/{
int
retval;
_VALIDATE_RETURN(
(format
!=
NULL),
EINVAL,
EOF);
_lock_str2(0,
stdin);
__try
{
retval
=
(inputfn(stdin,
format,
plocinfo,
arglist));
}
__finally
{
_unlock_str2(0,
stdin);
}
return(retval);}int
__cdecl
_input_l(_Inout_
FILE
*
_File,
_In_z_
__format_string
const
unsigned
char
*,
_In_opt_
_locale_t
_Locale,
va_list
_ArgList);由上面代碼可知scanf
只不過是一張皮,scanf
一個(gè)族系的函數(shù)都是通過實(shí)際調(diào)用
vscanf
來實(shí)現(xiàn)功能的,而vscanf
又是通過調(diào)用
_input_l
函數(shù)來實(shí)現(xiàn)功能的。
我們知道windows
的IO
是通過文件技術(shù)實(shí)現(xiàn)的,不管是輸入設(shè)備還是輸出設(shè)備,操作系統(tǒng)都將它抽象成一個(gè)文件,通過對(duì)文件的讀寫實(shí)現(xiàn)對(duì)數(shù)據(jù)的輸入和輸出。
通過查詢stdin的定義:
#define
stdin
(__iob_func()[0])
_CRTIMP
FILE
*
__cdecl
__iob_func(void);
我們可以知道,_input_l
函數(shù)正是將鍵盤輸入寫入了stdin
創(chuàng)建一個(gè)臨時(shí)的交換文件的緩沖區(qū)的。
說道讀取文件,你上面的問題就好揭示了。
第一、"1000
50
^z"
是一個(gè)整體,是一個(gè)有效的字符串,其本身并不含有文件結(jié)尾的含義。因?yàn)槟悴荒苷f“這個(gè)人不講禮貌,分手了也不說再見”,這句話和“再見”
這個(gè)詞的含義是一樣的。
第二、單獨(dú)的^Z
可被認(rèn)作文件的結(jié)尾也就是你判斷條件中的EOF。
因此,單獨(dú)輸入^Z
是可以結(jié)束循環(huán)的。
#includestdio.h
int main()
{ int a,b,c;
scanf("%d%d%d",a,b,c);
printf("a=%d b=%d c=%d\n",a,b,c);
return 0;
}
新聞標(biāo)題:c語言scanf函數(shù)代碼,c語言 scanf_s
轉(zhuǎn)載來于:http://sd-ha.com/article36/dsihdpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站建設(shè)、小程序開發(fā)、品牌網(wǎng)站設(shè)計(jì)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)