C語言如何接收通過鍵盤輸入的任意長度字符串


有時候需要對用戶輸入的字符串進行處理,由於事先不知道用戶會一次性輸入多長的字符串,一般有三種處理方法:

1、根據估計用戶最多輸入字符串長度進行申請空間。

2、使用getch、scanf(%c)等一個字符一個字符的接收處理。

3、使用

while(1)

{

scanf("%1000s",&str);

....

//對str字串進行處理

...

//在末尾

  if(strlen(str)!=1000)//如果長度不為1000說明已經接收完,此時可以跳出循環

   break; 

}

第一種方法的缺點是,用戶輸入量很有可能比程序員估計的要長。申請小了,會溢出,大了浪費。

第二種方法似乎可行,一個個字符的接收處理,直到遇到回車符為止跳出,但效率不高,每次都需要向系統的輸入緩存獲取數據需要消耗較多的時間。

第三種方法是對第二種方法的改進,一次最長獲取長度為1000的字符串,如果用戶輸入超過1000,可采用循環接收,每次接收都保存在str里,沒有增加額外的儲存空間。

顯然,第三種方法是最優的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM