C 通过 strlen() 设置数组大小

C Set Array size by 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 的长度用作 array 的长度。

我已经尝试使用 sizeof,而不是 strlen,但是 returns byte

这可能吗?

请试试这个。

char *list_array = calloc(lengthA, sizeof(char));
  1. 使用正确的类型。 strlen returns size_t 不是 int
  2. 您只能使用常量表达式初始化静态和全局变量。您不能使用任何函数调用或变量来初始化它们。
  3. 您可以使用 non-constant 表达式来初始化和定义自动变量。
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];  
}

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

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

您需要使用 malloc:

动态分配内存
char *input = "hello";
static const int lengthA = strlen(input);
char *list_array = malloc(lengthA);