c语言中定义数组的时候可不可以缺省数组长度 ,在用户输入任意字符后让系统自动判断长度,如果可以的话
c语言中定义数组的时候可不可以缺省数组长度,在用户输入任意字符后让系统自动判断长度,如果可以的话代码要怎么写...
c语言中定义数组的时候可不可以缺省数组长度 ,在用户输入任意字符后让系统自动判断长度,如果可以的话代码要怎么写
展开
7个回答
展开全部
(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;
}
或者 (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;
}
展开全部
如果是纯C语言的话,这种做法是不可以的,建议使用C 语言与C++ 混合的方式来写代码,这样就可以一定程度上缺省数组长度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言大致有三个标准: C89,C99,C11。
C99开始支持变长数组。
http://blog.csdn.net/xieyihua1994/article/details/51340354
可变长数组
C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定
其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的.
可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的.可以变化的只是数组的大小.
可以使用*来定义不确定长的可变长数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能。
而且也不建议动态创建数组,建议初始化数组时直接赋以固定长度,例如:
char str[1000];
╮(╯▽╰)╭
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询