這是對(duì)程序產(chǎn)生BUG,出現(xiàn)不可靠性的一個(gè)描述,有些函數(shù)在某些意外情況會(huì)導(dǎo)致程序陷入不可控狀態(tài),僅僅是PC上運(yùn)行最多也就是退出而已,但是如果是運(yùn)行在飛機(jī)等系統(tǒng)里的話,就會(huì)有大麻煩,說(shuō)危險(xiǎn)也不為過(guò)。因?yàn)橛⑽奈墨I(xiàn)里描述為dangerous,所以也就翻譯為危險(xiǎn)。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站建設(shè)、成都手機(jī)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。成都創(chuàng)新互聯(lián)擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺(jué)設(shè)計(jì)專才。
函數(shù)執(zhí)行需要一個(gè)??臻g,但這個(gè)??臻g容量是有限的,而且棧里存放了函數(shù)返回的地址。
gets()函數(shù)在獲取輸入時(shí),如果無(wú)限輸入會(huì)造成??臻g溢出,在程序返回時(shí),不能正常的找到返回地址,程序?qū)l(fā)生不可預(yù)測(cè)行為
談不上“危險(xiǎn)”,
gets() 函數(shù)從標(biāo)準(zhǔn)輸入讀入 一行文本,直到讀到 新行符 或 EOF 字符 之前,不會(huì)停止讀入文本。也就是:gets() 不檢查邊界。因此,當(dāng)變量空間 小于 一行字符串 時(shí), 使用 gets() 會(huì)造成 溢出,程序出錯(cuò)。
例如:
#includestdio.h
int main( )
{
char s[5];
printf ("input one line: ");
gets(s);
printf ("%s\n",s);
return 0;
}
這里,char s[5]; 最多存放 5個(gè)字符,如果 輸入一行字符 太多, 例如 輸入了 10 個(gè)字符,程序會(huì) 出錯(cuò)。出錯(cuò)其實(shí)沒(méi)什么大不了,發(fā)現(xiàn)問(wèn)題,你可以修改 成 char s[15]; 或 輸入語(yǔ)句提示
printf ("input one line, less than 5 chars: "); 談不上“危險(xiǎn)”.
C語(yǔ)言庫(kù)函數(shù),常用庫(kù)函數(shù)有:
1、scanf格式輸入函數(shù)
2、printf格式輸出函數(shù)
3、systemdos命令函數(shù)
4、sort排序
5、main主函數(shù)
6、fgets文件讀取字符串函數(shù)
7、fputs文件寫(xiě)入字符串函數(shù)
8、fscanf文件格式讀取函數(shù)
9、fprintf文件格式寫(xiě)入函數(shù)
10、fopen打開(kāi)文件函數(shù)
11、getchar輸入字符函數(shù)
12、putchar輸出字符函數(shù)
13、malloc動(dòng)態(tài)申請(qǐng)內(nèi)存函數(shù)
14、free釋放內(nèi)存函數(shù)
15、abs求絕對(duì)值數(shù)學(xué)函數(shù)
16、sqrt求平方根數(shù)學(xué)函數(shù)
擴(kuò)展資料
語(yǔ)言組成:
1、數(shù)據(jù)類型
C的數(shù)據(jù)類型包括:整型、字符型、實(shí)型或浮點(diǎn)型(單精度和雙精度)、枚舉類型、數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、指針類型和空類型。
2、常量與變量
常量其值不可改變,符號(hào)常量名通常用大寫(xiě)。
變量是以某標(biāo)識(shí)符為名字,其值可以改變的量。標(biāo)識(shí)符是以字母或下劃線開(kāi)頭的一串由字母、數(shù)字或下劃線構(gòu)成的序列,請(qǐng)注意第一個(gè)字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時(shí)為其分配相應(yīng)存儲(chǔ)單元。
3、數(shù)組
如果一個(gè)變量名后面跟著一個(gè)有數(shù)字的中括號(hào),這個(gè)聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結(jié)束。要特別注意的是,方括內(nèi)的索引值是從0算起的。
4、指針
如果一個(gè)變量聲明時(shí)在前面使用 * 號(hào),表明這是個(gè)指針型變量。換句話說(shuō),該變量存儲(chǔ)一個(gè)地址,而 *(此處特指單目運(yùn)算符 * ,下同。C語(yǔ)言中另有 雙目運(yùn)算符 *) 則是取內(nèi)容操作符,意思是取這個(gè)內(nèi)存地址里存儲(chǔ)的內(nèi)容。指針是 C 語(yǔ)言區(qū)別于其他同時(shí)代高級(jí)語(yǔ)言的主要特征之一。
參考資料來(lái)源:百度百科-函數(shù)