c-扫描后的动态内存分配



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

在使用scanf读取string之后,不可能为其动态分配内存,因为scanf需要一个指针。这意味着您必须首先分配内存,以便将其作为参数提供给scanf

你可以像下面的例子一样这样做:

char *str;
str = malloc(X*sizeof(char)); //where x is the number of characters you want to allocate
if (str != NULL)
    int result = scanf("%s", str);

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

注意:您应该小心输入,因为如果您输入的字符串大于分配的空间,可能会导致缓冲区溢出。

根据您的问题,您似乎想在扫描字符串后为其分配内存。不幸的是,您无法做到这一点,因为scanf函数需要内存地址来放入它扫描的数据。您能做的最好的事情是:

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

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

相关内容

  • 没有找到相关文章

最新更新