scanf ()不檢查輸入邊界,有內(nèi)存溢出風(fēng)險,已被VS 2019棄用。
衍生出自己的輸入函數(shù) ——— scanf_s(),提高安全性
關(guān)于scanf_s的用法,與scanf相似,針對輸入字符、字符串增加了參數(shù)(長度參數(shù),輸入長度檢測)
問1 – 輸入格式:int a = 0, b = 0, c = 0;
scanf_s("a=%d, b=%d, c=%d", &a, &b, &c);
//scanf_s并不輸出任何顯示字符,所以要根據(jù)所定義的輸入格式(a=1, b=2, c=3)來輸入內(nèi)容,才可以準(zhǔn)確賦值
// 1.輸入 a=1,b=2,c=3
// 2.輸入 x=1,b=2,c=33
// 3.輸入 a=1,d=3,c=4
printf("a=%d, b=%d, c=%d\n", a, b, c);
// 1.輸出 a=1, b=2, c=3
// 2.輸出 a=0, b=0, c=0
// 3.輸出 a=1, b=0, c=0
// 若輸入格式有誤,從錯誤的地方開始,后面的參數(shù)都無法賦值
問2 – 關(guān)于字符串輸入的參數(shù):char x[5];
scanf_s(“%s”, x, 5);
// 5為限制字符串x輸入的長度, 長度包含’\0’,字符串結(jié)束標(biāo)志要占一位
//意味著只能輸入4個字符,輸入多了將無法賦值
printf(“%s\n”, x);
// 1. scanf_s(“%s”, x, 3);
// 長度可以比數(shù)組短,但是輸入字符個數(shù)為2
// 2. scanf_s(“%s”, x, 6);
// 長度超過數(shù)組長度,報錯
// 輸入字符的話,也需要傳長度參數(shù)
char x;
scanf_s("%c", &x,1);
printf("%c\n", x);
問3 – 多余空格:int a = 0;
scanf_s(“%d”,&a); //正常情況
scanf_s(“%d ”,&a);
//格式控制字符%d 的后面有多余的兩個空格
// 會導(dǎo)致輸入 回車 后并不能結(jié)束輸入,除非再輸入一個多余的字符,引發(fā)函數(shù)錯誤來結(jié)束輸入
// 但這并不影響變量 a 的賦值
printf(“%d\n”,a);
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:C語言:VS2019scanf-創(chuàng)新互聯(lián)
本文來源:http://jinyejixie.com/article10/pgodo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、外貿(mào)建站、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、軟件開發(fā)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容