标签:
一直有个疑问输入一行数字存入数组时若不知道数字的个数怎么办,最容易想到的办法就是接收字符然后转化为数字,但这样太过麻烦。
今天上网查了下,说可以用ungetc()函数将字符送回输入流,在这里总结归纳一下
此外还意外的解决了另外一些以前遇到的问题,也是在调试代码时发现的,用此段代码可以用除了空格以外的字符作为分隔符,而且分隔符的长度也可以很长:如输入12qwertyuiop34asdfghjkl123,23zxc45 最后得到的数组为:a[0]=12,a[1]=34,a[2]=123,a[3]=23,a[4]=45
先贴上代码:
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语句外面可以减少循环次数
但是用其他符号作为分隔符的时候只能放在if语句中,不然会出错
这里又有另一个问题了,一开始怎么知道数组的长度,定义多少合适呢?
标签:
原文地址:http://www.cnblogs.com/wd1001/p/4826855.html