C中没有固定大小的字符数组

时间:2011-12-16 23:04:22

标签: c arrays

如何在不使用C中的固定长度数组的情况下输入字符数组? 我被赋予C中心字符串的赋值,并被告知不要使用固定大小的数组。

3 个答案:

答案 0 :(得分:4)

创建没有固定大小的数组的唯一方法是使用malloc,它接受​​要分配的内存大小(以字节为单位)。然后,您将其用作char*,它也可以容纳数组语法。 不要忘记来测试返回值是否为非零(这是malloc表示内存不足的方式)。

使用完内存后,您将负责使用free将其释放回系统。

例如:

size_t size = 42; // you can read this from user input or any other source
char* str = malloc(size);

if (str == 0) {
    printf( "Insufficient memory available\n" );
}
else {
    // Use the memory and then...
    free(str);
}

答案 1 :(得分:3)

查找mallocrealloc的功能。

我假设非固定大小意味着动态分配的数组 - 可以使用malloc获得。

答案 2 :(得分:0)

你可以dynamic memory allocation by malloc

Example

int main()
{
    int i;

    printf ("How long do you want the string? ");
    scanf ("%d", &i);

    char *buffer = malloc (i+1);
}