一直有個疑問輸入一行數字存入陣列時若不知道數字的個數怎麼辦,最容易想到的辦法就是接收字元然後轉化為數字,但這樣太過麻煩。
今天上網查了下,說可以用ungetc()函式將字元送回輸入流,在這裡總結歸納一下
此外還意外的解決了另外一些以前遇到的問題,也是在除錯**時發現的,用此段**可以用除了空格以外的字元作為分隔符,而且分隔符的長度也可以很長:如輸入12qwertyuiop34asdfghjkl123,23zxc45 最後得到的陣列為:a[0]=12,a[1]=34,a[2]=123,a[3]=23,a[4]=45
先貼上**:
1 #include2 #include3intmain()416
}17for(i=0;i)
1821
return0;
22 }
這裡要說明一下,在使用空格作為分隔的時候把14行的scanf函式放到if語句外面可以減少迴圈次數
但是用其他符號作為分隔符的時候只能放在if語句中,不然會出錯
這裡又有另乙個問題了,一開始怎麼知道陣列的長度,定義多少合適呢?
如果預先可以估計陣列的大小,那麼可以比估計的數值定義的稍大一些即可
如果無法預知,我的解決辦法就是使用鍊錶,但是這樣就無法使用陣列的一些特性,比如可能會花很多的時間去尋找某一下標的資料
另外我想到的就是犧牲儲存空間的辦法,先用鍊錶將資料存起來,並記錄個數。如果後面需要多次利用下標訪問資料的話,可動態分配一塊記憶體來儲存資料,並將原來的鍊錶釋放,或根據需要保留
除此之外也沒想到有什麼好的方法。。。
c語言輸入一行未知個數數字存入陣列
include includeint main for i 0 i n i return 0 c庫函式isdigit 是標頭檔案ctype.h中宣告的乙個函式。原型為 int isdigit int c 作用 判斷c指定的字元是否為數字字元,即 0 9 如果是,返回1 否則,返回0。isdigit函...
Python 一行輸入多個數,並存入列表
方法一方法二 在python裡,如果你僅使用input 的話是輸入一行的內容並將該行的內容以字串的形式存到變數中,但如果你想要在一行輸入多個數字的話使用int input 就沒法實現。注 使用python2版本時可能會報錯 python中列表元素轉為數字的方法分析 split 是乙個方法,將字串以空...
輸入一行字元,統計其中各種字元個數(C語言)
編譯環境vs2017 其中輸出英文本母,數字,空格以及其他字元的個數 需要注意的是fgets 函式的使用,會在字串末尾 0前 讀入我們在鍵盤上敲的回車即換行符 n include include include define m 1024 void main else if str i 64 str...