轉載https://www.cnblogs.com/wd1001/p/4826855.html
一直有個疑問輸入一行數字存入數組時若不知道數字的個數怎么辦,最容易想到的辦法就是接收字符然后轉化為數字,但這樣太過麻煩。
今天上網查了下,說可以用ungetc()函數將字符送回輸入流,在這里總結歸納一下
此外還意外的解決了另外一些以前遇到的問題,也是在調試代碼時發現的,用此段代碼可以用除了空格以外的字符作為分隔符,而且分隔符的長度也可以很長:如輸入12qwertyuiop34asdfghjkl123,23zxc45 最后得到的數組為:a[0]=12,a[1]=34,a[2]=123,a[3]=23,a[4]=45
#include<stdio.h> #include<ctype.h> int main() { int a[1000]; char c; int i = 0; int n = 0; while ((c = getchar()) != '\n') { if (isdigit(c)) { ungetc(c, stdin);//將c送回輸入流 scanf("%d", &a[n++]); } } for (i = 0; i < n; i++) { printf("%d ", a[i]); } return 0; }