一直有個疑問輸入一行數字存入數組時若不知道數字的個數怎麼辦,最容易想到的辦法就是接收字符而後轉化爲數字,但這樣太過麻煩。git
今天上網查了下,說能夠用ungetc()函數將字符送回輸入流,在這裏總結概括一下數組
此外還意外的解決了另一些之前遇到的問題,也是在調試代碼時發現的,用此段代碼能夠用除了空格之外的字符做爲分隔符,並且分隔符的長度也能夠很長:如輸入12qwertyuiop34asdfghjkl123,23zxc45 最後獲得的數組爲:a[0]=12,a[1]=34,a[2]=123,a[3]=23,a[4]=45函數
先貼上代碼:ui
1 #include<stdio.h> 2 #include<ctype.h> 3 int main() 4 { 5 int a[1000]; 6 char c; 7 int i=0; 8 int n=0; 9 while((c=getchar())!='\n') 10 { 11 if(isdigit(c)) 12 { 13 ungetc(c,stdin);//將c送回輸入流 14 scanf("%d",&a[n++]); 15 } 16 } 17 for(i=0;i<n;i++) 18 { 19 printf("%d ",a[i]); 20 } 21 return 0; 22 }
這裏要說明一下,在使用空格做爲分隔的時候把14行的scanf函數放到if語句外面能夠減小循環次數spa
可是用其餘符號做爲分隔符的時候只能放在if語句中,否則會出錯調試
這裏又有另外一個問題了,一開始怎麼知道數組的長度,定義多少合適呢?code