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));
- 使用正确的类型。
strlen
returns size_t
不是 int
- 您只能使用常量表达式初始化静态和全局变量。您不能使用任何函数调用或变量来初始化它们。
- 您可以使用 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);
在 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));
- 使用正确的类型。
strlen
returnssize_t
不是int
- 您只能使用常量表达式初始化静态和全局变量。您不能使用任何函数调用或变量来初始化它们。
- 您可以使用 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);