一个scanf()用法的简单问题
本人想用scanf函数在一行上接收若干个整数类型,但是整数类型的个数不确定。
我用一个int a[1000]数组存储从控制台上接收的数据,即根据用户输入的n,来表示可以输入的行数。
n = 2;while(n--){scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);//只能接收4个数据//do something()} for(i=0;i<n;i++) scanf("%d",&a[i]);
[解决办法]
可以的。getchar来做嘛。当你遇到空格的时候表示前面的是一个整数和后面的没有关系。遇到回车键就表示换行了
[解决办法]
#include <stdio.h>char *p;int i,v,n,k;int a[1000];char ln[80];void main() { i=0; while (1) { fgets(ln,80,stdin); if (ln[0]=='\n') break; p=ln; while (1) { k=sscanf(p,"%d%n",&v,&n);// printf("k,v,n=%d,%d,%d\n",k,v,n); if (1==k) { p+=n; a[i]=v; i++; if (i>=1000) break; } else if (0==k) { p++; } else {//EOF==k break; } } if (i>=1000) break; } n=i; for (i=0;i<n;i++) printf("a[%d]=%d\n",i,a[i]);}//输入12 343 456 342回车//输入13 45 657 45 -234回车//输入回车//输出//a[0]=12//a[1]=343//a[2]=456//a[3]=342//a[4]=13//a[5]=45//a[6]=657//a[7]=45//a[8]=-234