劇多
首頁
資訊
體育
娛樂
汽車
投資
財經
軍事
科技
數碼
科學
遊戲
歷史
健康
政治
影視
旅遊
育兒
美食
時尚
房產
農業
社會
文化
教育
技術
美文
情感
故事
家居
職場
自然
闢謠
心理
攝影
漫畫
生活
其它
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區別?
∧
中秋節和大豐收的關聯?
∨
成語什麼膽相照?
熱門排行
鐵鼓的樂器叫什麼?
蘋果手機怎麼把個人熱點放到主頁?
潛行者陣容配什麼英雄之力?
守望先鋒競技點數怎麼得?
榮耀暢玩40i和華為暢享60哪個好?
area是地區的意思嗎?
這次亞冬會有哪幾個國家參加?
李榮浩是王靖雯學員嗎?
拼好飯沒人拼會怎麼樣?
燈線路壞了怎麼修?
用 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()?這輸入流的爛設計,根本就不所謂“安全”。