劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
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區別?
∧
中秋節和大豐收的關聯?
∨
成語什麼膽相照?
熱門排行
星途瑤光兩驅優享版後視鏡電加熱怎麼用?
華為mate60pro超級微距能看到蟎蟲嗎?
原神如何快速拿到凱亞皮膚?
carxstreet亞洲為什麼進不去?
用珍珠粉和牛奶做面膜?
拼好飯沒人拼會怎麼樣?
中醫臨床全科醫學學什麼?
溫控面板不亮?
剪輯中如何讓多張照片切換絲滑?
繁殖小太陽鸚鵡需要什麼手續?
用 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()?這輸入流的爛設計,根本就不所謂“安全”。