是否可以在使用scanf读取的字符串中进行动态内存分配,而无需先将其声明为数组?
答案 0 :(得分:0)
<{em> 一个指针。这意味着您必须首先分配内存,以便将其作为string
的参数。
您可以像以下示例一样执行此操作:
scanf
换句话说,将分配的指针传递给scanf
。
注意 :您应该注意所提供的输入,因为如果您提供的字符串大于分配的字符串,则可能会导致buffer-overflow空间。
答案 1 :(得分:0)
从您的问题看来,您似乎想要在扫描完之后为字符串分配内存。不幸的是,您无法执行此操作,因为scanf
函数需要内存地址放入它扫描的数据。你能做的最好的是:
char *someInput = malloc(sizeof(char) * 80);
scanf("%s", someInput);
编辑:注意80是一个任意数量,这表示我们为要保留的字符串分配的字符数 - 选择80是因为它是命令提示符中通常的行长度。