日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

scanf_s写入错误怎么办?(字符串需要sizeof()参数指定接收长度)附示例

發(fā)布時(shí)間:2025/3/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scanf_s写入错误怎么办?(字符串需要sizeof()参数指定接收长度)附示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

#include <stdio.h> int main() {char i[5];char b[100];int result;//函數(shù)返回值scanf_s("%s", &i);printf("普通拳!\n");scanf_s("%s %s", &i, &b);result = scanf_s("%s %s", &i, &b);//運(yùn)行結(jié)果為2,因?yàn)檩斎肓藘蓚€(gè)數(shù),一個(gè)a,一個(gè)breturn 0; }

如上代碼,調(diào)試時(shí)報(bào)錯(cuò):

解決辦法:
scanf_s要加第三個(gè)參數(shù),指定能夠讀取的輸入字符串長度,如果輸入的字符串(包含‘\0’)大于這個(gè)長度,第一個(gè)字符就會變成‘\0’,

若輸入小于或等于指定長度,結(jié)果就正常


一般第三個(gè)參數(shù)用sizeof(i)就好了

參考文章:使用scanf_s發(fā)生寫入錯(cuò)誤的解決途徑

代碼示例:

scanf_s("%s %s %s %d", &stuNo, sizeof(stuNo), &stuName, sizeof(stuName), &classNo, sizeof(classNo),&totalScore); #include <stdio.h> #include <String.h>struct student {//定義學(xué)生結(jié)構(gòu)體,分別包含成員學(xué)號、姓名、班別、總評成績char stuNo[12];char stuName[20];char classNo[15];int totalScore; };int main() {struct student student1; //定義學(xué)生結(jié)構(gòu)體類型變量printf("請輸入學(xué)號,姓名,班別,總評成績,以空格隔開:\n");void logInfo(struct student* ptr);//因?yàn)楹瘮?shù)寫在main函數(shù)后面,所以要聲明logInfo(&student1);//調(diào)用函數(shù),以學(xué)生結(jié)構(gòu)體類型變量地址作為實(shí)參printf("\n學(xué)號:%s\n姓名:%s\n班別:%s\n總評成績:%d\n", student1.stuNo, student1.stuName, student1.classNo, student1.totalScore);return 0; }void logInfo(struct student* ptr)//該函數(shù)實(shí)現(xiàn)對結(jié)構(gòu)體成員數(shù)據(jù)的錄入操作 {char stuNo[12] = { 0 }, stuName[20] = { 0 }, classNo[15] = {0};//如果不全初始化為零,strcpy_s函數(shù)會提示可能沒有為字符串添加字符串零終止符int totalScore;scanf_s("%s %s %s %d", &stuNo, sizeof(stuNo), &stuName, sizeof(stuName), &classNo, sizeof(classNo),&totalScore);strcpy_s(ptr->stuNo, stuNo);strcpy_s(ptr->stuName, stuName);strcpy_s(ptr->classNo, classNo);ptr->totalScore = totalScore; }

運(yùn)行結(jié)果:

請輸入學(xué)號,姓名,班別,總評成績,以空格隔開: 13331333 nana 4 585學(xué)號:13331333 姓名:nana 班別:4 總評成績:585D:\Dontla_small_project\20210525_address_list\vs_test\vs_test\Debug\vs_test.exe (進(jìn)程 34128)已退出,代碼為 0。 按任意鍵關(guān)閉此窗口. . . 與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的scanf_s写入错误怎么办?(字符串需要sizeof()参数指定接收长度)附示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。