scanf后的动态内存分配

时间:2016-05-09 09:22:25

标签: c malloc dynamic-allocation

是否可以在使用scanf读取的字符串中进行动态内存分配,而无需先将其声明为数组?

2 个答案:

答案 0 :(得分:0)

<{em> 一个指针。这意味着您必须首先分配内存,以便将其作为string的参数。

您可以像以下示例一样执行此操作:

scanf

换句话说,将分配的指针传递给scanf

注意 :您应该注意所提供的输入,因为如果您提供的字符串大于分配的字符串,则可能会导致空间。

答案 1 :(得分:0)

从您的问题看来,您似乎想要在扫描完之后为字符串分配内存。不幸的是,您无法执行此操作,因为scanf函数需要内存地址放入它扫描的数据。你能做的最好的是:

char *someInput = malloc(sizeof(char) * 80);
scanf("%s", someInput);

编辑:注意80是一个任意数量,这表示我们为要保留的字符串分配的字符数 - 选择80是因为它是命令提示符中通常的行长度。