如何输入未确定长度的数组

如何输入未确定长度的数组

今天用许久未碰的C语言写数据结构作业时遇到了这个问题,在不确定要输入的整型数组长度时我们应该如何输入,并用回车结束输入?如:LA=(3,5,8,11),LB=(2,6,8,9,11,15,20)
在这给出两种解决办法

	int count=0;
	int a[1024]={0};
	while(1)
	{
		scanf("%d",&a[count]);/*这里其实有个bug,如果你输入的是一个空
		数组,即直接回车的话程序会卡在这里,因为scanf需要接收到一个整型数据*/
		count++;
		if(getchar() == '\n')//遇到换行时跳出循环
		{
			break;
		}
	}
	for(temp=0;temp<count;temp++)//打印结果
	{
		printf("%d ",a[temp]);
	}
	printf("\n%d",count);

如果你不希望在while循环中再进行判断,那么可以使用do while

	int count=0;//count用于计数
	int a[1024]={0};
	do//注意,不能直接使用while(getchar!='\n),而应该使用do while,
	//因为前者会导致第一个数据丢失(程序运行先进入判断条件第一个数字被getchar拿走)
	{
		scanf("%d",&a[count]);
		count++;
	}while(getchar()!='\n');//遇到换行时结束循环
	for(temp=0;temp<count;temp++)//打印结果
	{
		printf("%d ",a[temp]);
	}
	printf("\n%d",count);

LA正常运行
LB正常运行

以上也只是我临时查阅资料,经过调试之后总结出来的,限于知识水平难免有错漏之处,请多指正包涵。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值