scanf 后的动态内存分配

Dynamic memory allocation after scanf

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

无法为 string 使用 scanf 读取后动态分配内存,因为 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

注意 :你应该小心你提供的输入,因为你可能会导致 如果你给一个大于分配的 space.

的字符串

从你的问题来看,你似乎想在 扫描到 之后为字符串分配内存。不幸的是你不能这样做,因为 scanf 函数需要内存地址来放置它扫描的数据。你能做的最好的是:

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

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