微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C通过strlen设置数组大小

如何解决C通过strlen设置数组大小

在C而不是C ++中,我尝试使用const int中包含的strlen()设置char数组大小。

char *input = "hello";

//Now the integer that contains the lenght
static const int lengthA = strlen(input); //upto here,it works

char list_array[lengthA]; //here doesn't work,because the variable lengthA is not initialized

因此,我希望将 input 的长度用作数组的长度。

我已经尝试使用 sizeof ,而不是 strlen ,但是它返回了字节

这可能吗?

解决方法

您正在使用的功能称为可变长度数组,其中数组的大小在运行时确定。但是,Visual Studio不支持此功能。

您需要使用malloc动态分配内存:

char *input = "hello";
static const int lengthA = strlen(input);
char *list_array = malloc(lengthA); 
,
  1. 使用正确的类型。 strlen返回size_t而不返回int
  2. 您只能使用常量表达式初始化静态和全局变量。您不能使用任何函数调用或变量来对其进行初始化。
  3. 您可以使用非常数表达式来初始化和定义自动变量。
char *input = "hello";
char input1[] = "hello";

static const size_t lengthA = sizeof(input1); 

char list_array[sizeof(input1)];


void foo(void)
{
    const size_t lengthA = strlen(input); 
    char listArray[lengthA + 1];  
}

节点是局部变量定义中的+1。您需要它来容纳字符串以及终止的空字符

,

请尝试这个。

char *list_array = calloc(lengthA,sizeof(char));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。