转载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()) != ' ') { if (isdigit(c)) { ungetc(c, stdin);//将c送回输入流 scanf("%d", &a[n++]); } } for (i = 0; i < n; i++) { printf("%d ", a[i]); } return 0; }