如何在不使用C中的固定长度数组的情况下输入字符数组? 我被赋予C中心字符串的赋值,并被告知不要使用固定大小的数组。
答案 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)
查找malloc
和realloc
的功能。
我假设非固定大小意味着动态分配的数组 - 可以使用malloc
获得。
答案 2 :(得分:0)
你可以dynamic memory allocation by malloc
。
int main()
{
int i;
printf ("How long do you want the string? ");
scanf ("%d", &i);
char *buffer = malloc (i+1);
}