日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

解决scanf_s函数报错:没有为格式字符串传递足够的参数

發布時間:2025/3/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决scanf_s函数报错:没有为格式字符串传递足够的参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

報錯:scanf_s函數報錯:沒有為格式字符串傳遞足夠的參數

int main() {char s1[20] = "i m name";char *p1, *p2;char s3[10] = {0};p1 = s1;p2 = s3;printf("請輸入你的名字: \n");scanf_s("%s",&s3);printf("%s\n", s3);for (; *p1 != '\0'; p1++) {if (*p1 == *p2) {p2 = s3;}printf("I am %s\n", s3);}while (true){}return 0; }

這個問題很變態

解決辦法:在使用%c和%s讀入字符或字符串時,應在地址參數后附加一個緩沖區邊界值。?

int main() {char s1[20] = "i m name";char *p1, *p2;char s3[10] = {0};p1 = s1;p2 = s3;printf("請輸入你的名字: \n");//scanf_s("%s",&s3);scanf_s("%s",&s3,sizeof(s3)); //使用sizeofprintf("%s\n", s3);for (; *p1 != '\0'; p1++) {if (*p1 == *p2) {p2 = s3;}printf("I am %s\n", s3);}while (true){}return 0; }

總結;就會提示你沒有為格式字符串傳遞足夠的參數。
首先我們來看一下scanf和scanf_s的區別
scanf()不會檢查輸入邊界,可能造成數據溢出。
scanf_s()會進行邊界檢查。
scanf()函數是標準C中提供的標準輸入函數,用以用戶輸入數據
scanf_s()函數是Microsoft公司VS開發工具提供的一個功能相同的安全標準輸入函數,從vc++2005開始,VS系統提供了scanf_s()。在調用該函數時,必須提供一個數字以表明最多讀取多少位字符。

?

?

上面的程序有點復雜;下面來一個簡單點的例子:

int main(void) {char str1[30] = { 0 };char str2[30] = { 0 };char str3[30] = { 0 };//gets() 用法printf("Input a string: ");gets_s(str1);//scanf() 用法printf("Input a string: ");scanf_s("%s", str2);scanf_s("%s", str3);printf("\nstr1: %s\n", str1);printf("str2: %s\n", str2);printf("str3: %s\n", str3);while (true){}return 0; }

上面的代碼當你輸入字符串的時候會報錯:沒有為格式字符串傳遞足夠的參數

解決辦法:在使用%c和%s讀入字符或字符串時,應在地址參數后附加一個緩沖區邊界值。?

總結

以上是生活随笔為你收集整理的解决scanf_s函数报错:没有为格式字符串传递足够的参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。