c语言中定义数组的时候可不可以缺省数组长度 ,在用户输入任意字符后让系统自动判断长度,如果可以的话

c语言中定义数组的时候可不可以缺省数组长度 ,在用户输入任意字符后让系统自动判断长度,如果可以的话代码要怎么写

(1)你可以定义一个长度长于需要的数组,例如: char str[500];
或者 (2)运行时,输入长度,做动态分配,再输入数据 ,例如:
char *str; int n;
printf("input length n: "); scanf("%d",&n);
str = malloc(sizeof(char) * n);
或者 不知道长度,完全随机, 那么 (3) 用 realloc 反复动态分配。这个较繁锁,你可参考下面的 整型数组分配法,做你的 char 数组 或 别的数组的 反复动态分配。
#include <stdio.h>
#include <stdlib.h> /* realloc, free, exit, NULL */

intmain ()
{
int input,n;
int count = 0;
int *numbers = NULL; //动态数组
int *more_numbers = NULL;

do{
printf ("Enter an integer value (0 to end): ");
scanf ("%d", &input); //输入一个数
count++; // 计数器,数的个数

more_numbers = (int*) realloc (numbers, count *sizeof(int)); //分配,增加内存

if(more_numbers!=NULL) { //检查是否分配成功
numbers=more_numbers;
numbers[count-1]=input;
}
else{
free (numbers);
puts ("Error (re)allocating memory");
exit (1);
}

}while(input!=0); //循环

printf ("Numbers entered: ");
for(n=0;n<count;n++) printf ("%d ",numbers[n]);
free (numbers);

return0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-23
如果是纯C语言的话,这种做法是不可以的,建议使用C 语言与C++ 混合的方式来写代码,这样就可以一定程度上缺省数组长度
第2个回答  2017-10-10

C语言大致有三个标准: C89,C99,C11。

C99开始支持变长数组。

http://blog.csdn.net/xieyihua1994/article/details/51340354

可变长数组
C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定
其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的.
可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的.可以变化的只是数组的大小.
可以使用*来定义不确定长的可变长数组。

第3个回答  推荐于2018-03-23
c语言中定义数组的时候不可以缺省数组长度,在用户输入任意字符后让系统自动判断长度。本回答被网友采纳
第4个回答  2018-03-23

    不能。

    而且也不建议动态创建数组,建议初始化数组时直接赋以固定长度,例如:

char str[1000];

╮(╯▽╰)╭

相似回答