首先解答一下這個(gè)C語(yǔ)言代碼出錯(cuò)的原因:
目前成都創(chuàng)新互聯(lián)已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、福貢網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
第一個(gè)gets未定義:
出現(xiàn)這個(gè)錯(cuò)誤一般是沒(méi)有包含相應(yīng)的頭文件,或者庫(kù)里沒(méi)有這個(gè)函數(shù)。這里應(yīng)該是沒(méi)有這個(gè)函數(shù)。gets(char *dest)是一個(gè)老的庫(kù)函數(shù),采用這個(gè)函數(shù)存在越界的安全隱患。它只有一個(gè)參數(shù),如果輸入的字符個(gè)數(shù)超過(guò)dest內(nèi)存空間,程序可能失敗,也可能被黑客利用這個(gè)漏洞進(jìn)行不正常操作。可以使用fgets(char *dest, int size, FILE *fp)代替,它可以通過(guò)第二個(gè)參數(shù)設(shè)置最大輸入解決上面的問(wèn)題。
第二/三個(gè)strcat參數(shù)2類型不符:
strcat的第二個(gè)參數(shù)語(yǔ)言char *,而調(diào)用時(shí)jiji[i]是char,可以寫成jiji[i],改完語(yǔ)法沒(méi)有問(wèn)題,邏輯要再自己評(píng)估一下。
第四個(gè)返回局部變量re:
re是lai函數(shù)內(nèi)部的數(shù)組,在棧內(nèi),當(dāng)函數(shù)執(zhí)行完會(huì)進(jìn)行釋放資源。其棧內(nèi)的空間可能用于它處,內(nèi)容可能被改變。建議是不要返回局部變量。
以上就是這個(gè)代碼語(yǔ)法出錯(cuò)的解答。
另外補(bǔ)充一下:
整體來(lái)看這段代碼代碼比較長(zhǎng),for循環(huán)也比較多,后續(xù)再優(yōu)化一下。先實(shí)現(xiàn)功能再優(yōu)化。下面這個(gè)代碼你可以參考。
這個(gè)是可以實(shí)現(xiàn)的,這樣就行。#include#include#include#includeintmain(){intn;printf("請(qǐng)輸入數(shù)字:【】\b\b");scanf("%d",n);}\b是退格符號(hào)。因?yàn)椤啊尽俊笔侵形姆?hào),所以占得字節(jié)數(shù)與英文字符不一樣。你自己可以調(diào)一下格式。而且這兒還有一個(gè)關(guān)鍵的問(wèn)題,就是當(dāng)“【】”內(nèi)的內(nèi)容夠長(zhǎng)時(shí),就會(huì)把后面的括號(hào)“】”覆蓋掉。你可以自己試一下
strcpy將源字符串拷貝到目標(biāo)字符串時(shí),并不檢查目標(biāo)字符串的長(zhǎng)度,如果源字符串過(guò)長(zhǎng)會(huì)導(dǎo)致目標(biāo)內(nèi)存后面的空間被覆蓋
本文題目:c語(yǔ)言容易出現(xiàn)的漏洞函數(shù) c語(yǔ)言容易出錯(cuò)的問(wèn)題
URL標(biāo)題:http://www.chinadenli.net/article40/dddogeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、App設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站排名、網(wǎng)站內(nèi)鏈、虛擬主機(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)