劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
Club
Tips
熱門話題
搜尋
註冊
登入
首頁
>
Club
>
2021-05-02 03:13
c語言中怎麼限制輸入字串的長度?
23
回覆列表
1 # 使用者9119320568657
用 fgets() 限定長度,保證輸入的記憶體安全;用 strtoint() 簡單轉換。
strtoint() 可以寫成過程,如果使用 stdlib.h 的 atoi(),對於太長的字串,atoi() 文件裡也沒有說有任何限制。直接轉換,int 可能存放不下。那麼只能巢狀迴圈,對 str[] 內每一個字母進行轉換(所以這步 "ch" - "0" 就可以)。(參考:atoi - C++ Reference)陣列每一位儲存一個數字。避免使用 scanf() 這個可能重寫緩衝區的函式。----------------------我還是有點擔心對 str* 的指標呼叫,寫 char str[] 和 char* str 有區別嗎?反正前面這個是錯的。最搞不清楚指標了。-----------------------更新:新問題:fgets(str, length, stdin); 會把第一次呼叫的標準流繼續放入第二次呼叫,第一次結尾是個分行符,第二次呼叫就直接退出。用迴圈巢狀 getch()?這輸入流的爛設計,根本就不所謂“安全”。
發表回復
相關內容
cad點劃線為什麼輸入長度沒有反應?
為什麼abcdeFg字串長度小於abcdef c語言?
C語言裡面字串函式strcmpbcmp區別?
∧
中秋節和大豐收的關聯?
∨
成語什麼膽相照?
熱門排行
平安盛世金越至尊年金險優缺點?
507焊條蓋面怎麼焊出魚鱗紋?
11年比亞迪s6油耗怎麼樣?
愛瑪露娜電動車2023新款優缺點?
炫色粉怎麼改色?
苦蕎茶如何選擇?
花果山玉女峰怎麼上去?
如何使滷菜色澤紅亮?
戰火使命角色強度排行?
王國之淚大師劍拔出來之後白龍去哪裡了?
用 fgets() 限定長度,保證輸入的記憶體安全;用 strtoint() 簡單轉換。
strtoint() 可以寫成過程,如果使用 stdlib.h 的 atoi(),對於太長的字串,atoi() 文件裡也沒有說有任何限制。直接轉換,int 可能存放不下。那麼只能巢狀迴圈,對 str[] 內每一個字母進行轉換(所以這步 "ch" - "0" 就可以)。(參考:atoi - C++ Reference)陣列每一位儲存一個數字。避免使用 scanf() 這個可能重寫緩衝區的函式。----------------------我還是有點擔心對 str* 的指標呼叫,寫 char str[] 和 char* str 有區別嗎?反正前面這個是錯的。最搞不清楚指標了。-----------------------更新:新問題:fgets(str, length, stdin); 會把第一次呼叫的標準流繼續放入第二次呼叫,第一次結尾是個分行符,第二次呼叫就直接退出。用迴圈巢狀 getch()?這輸入流的爛設計,根本就不所謂“安全”。