書上的代碼第10行沒有4(圖三),但是如果不加4就會出現錯誤(如圖二)只有加了4才能正常運行,加1也行,但加了5555后就有了這個(圖五)。有誰能解釋下嘛



uj5u.com熱心網友回復:
scanf() 與 scanf_s() 是有區別的。第10行正確的應該是:scanf_s("%s",name,40) ;https://blog.csdn.net/weixin_44093867/article/details/97525914?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161889596316780269825965%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161889596316780269825965&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-97525914.pc_search_result_no_baidu_js&utm_term=scanf_s%E4%B8%8Escanf%E7%9A%84%E5%8C%BA%E5%88%AB
uj5u.com熱心網友回復:
書上的是scanf,而你的編譯器要求是scanf_s,只是對scanf再次進行了封裝,比scanf更安全,因為它限定了快取長度,可以有效防止越界;多出的這個引數不能傳入4,而需要傳入40;
uj5u.com熱心網友回復:
man scanf_s哦,windows 沒有 manual,跳轉到 scanf_s 介面直接看引數說明吧
uj5u.com熱心網友回復:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l?view=msvc-160
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278197.html
標籤:C語言
