C语言中如何控制未知长度的数组的输入

比如说先定义
int a[1000];
输入时如何知道什么时候结束

方法一:每输入一次,都询问是否继续输入
while(1)
{
scanf("%d",&a[i]);
printf("是否继续?(Y/N)");
c=getchar();
if(c=='Y'||c=='y')continue;
else break;
}
这种方法比较笨
方法二:规定输入的范围,例如要输入的是正整数,那么可以检测输入的是否合法,如果输入了负数就结束循环
while(scanf("%d",&a[i])==1&&a[i]>0)
{
continue;
}
方法很多,依据不用程序的不同任务可以有不同的办法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-21
通常所在函数形参的时候会涉及到长度的处理。
常见处理方法有2个:

1、指定接受长度。形参用两个参数,第一个参数为指向字符串的指针,第二个参数为字符串的长度。
例子:
Get_String(stringbuf[],num).
2、用特殊的结束符,比如\r\n为结尾符号
例如:
while(1)
{
if((stringbuf[i] == '\r') && (stringbuf[i] == '\n'))
{
break;

}
else
{
//user code

}
i ++;
}
第2个回答  推荐于2017-09-17
for(int i=0;i<1000;i++)输入a[i]不就行了吗
另外,c语言的函数库定义了一个符号EOF,end of fail,文件结束符,可以用这个进行判断。在vc++6.0上是按ctrl+z,在Linux下是按ctrl+D本回答被提问者采纳
第3个回答  2011-12-14
既然是未知长度,1000.万一还不够呢。
只要记录数组首地址即可。

int a[1000];
输入时如何知道什么时候结束?

相必你是想输入字符串,
关键是while(a[i] != '\0')
第4个回答  2011-12-14
你是想说在不知道数组长度的情况下输入,要防止输入越界是吧,你可以使用length=sizeof(a)/n来知道数组大小,如果是char型n=1;int型 n=4 ;short型 n=2 以此类推等等
相似回答