gpt4 book ai didi

C:扫描期间的动态分配

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:36 25 4
gpt4 key购买 nike

我想知道在使用 scanf 时/之前是否有任何方法可以动态分配一些内存。这意味着在初始化 char * 时不需要给它一个大小。取而代之的是,将根据输入字符串的大小分配所需的内存量(这意味着:在输入之后)。

目前我找不到其他解决方案,只能在输入之前分配特定数量的内存,所以在知道输入的大小之前:

char str[10];
scanf("%s", str);

而且我知道这不安全:如果输入超过 10 个字符,程序将写入未分配的内存,这可能会导致段错误或类似问题。

最佳答案

正如评论中指出的那样,我相信 %m 可以解决您的问题

另一种方法是将输入限制为您知道已分配给变量的数字字节,例如 %10s 将仅输入 10 个字符然后重新分配你的输入变量,为下一次调用 scanf 时输入更多字符腾出空间,你需要在下一次调用中像 &str[10] 一样传递 str,这样它就不会覆盖之前的输入

关于C:扫描期间的动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com