c语言动态数组长度

定义了一个动态的内存地址,想要输入n个数,当然n为随机的,怎样实现由用户输入n个数后按回车跳出输入?比如:要输入小于10个数的数,怎样实现输完1到10之间个数时按回车跳出。

输入个数无限制,要求输入格式为数字在同一行,数字之间用空白分隔,数字输入完成后用回车结束输入:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n,i,*arr=NULL;
for (i=1; ; i++) {/*输入若干个整数,并存入arr动态数组*/
scanf("%d",&n);
arr=(int *)(arr?realloc(arr,sizeof(int)*i):malloc(sizeof(int)));
arr[i-1]=n;
if (getchar()=='\n') break;
}

for (n=0; n<i; n++) {/*输出arr数组的元素*/
printf("%d\t",arr[n]);
}
free(arr);/*释放空间*/
return 0;
}
//---------------------------------------------------------------------------
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-13
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int *array,n,i;
printf("输入数据个数:");
scanf("%d",&n);
array=(int*)calloc(n,sizeof(int)); //申请n个连续的空间
for(i=0;i<n;i++)
scanf("%d",array+i); //循环输入n次输入数据不管你怎么输 输完n个数自动跳出
printf("这个数组为:\n");
for(i=0;i<n;i++)
printf("%d\t",array[i]);
free(array); //不要忘记释放申请的空间 避免造成内存泄露
return 0;
}
第2个回答  2015-10-24
1、C语言中,定义数组后可以用sizeof命令获得数组的长度(即可容纳元素个数)。但是通过传递数组名参数到子函数中,以获得数组长度是不可行的,因为在子函数当中,数组名会退化为一个指针。
2、例如:
int data[4],length;
length=sizeof(data)/sizeof(data[0]); //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数
printf("length of data[4]=%d", length ); //输出length of data[4]=4本回答被网友采纳