gpt4 book ai didi

c - 如何在c中 "clear"数组为较小的数组腾出空间?

转载 作者:行者123 更新时间:2023-11-30 14:40:54 25 4
gpt4 key购买 nike

我有一个 C 语言数组,假设它是

**arr = malloc(100 * sizeof(char*));

通过某个函数,我以最终成为的方式填充该数组

arr = {"first", "second", "third", "fourth", ... "tenth"};

现在,如果我想重新填充它,那么它就是

arr = {"1st", "2nd", "3rd"}; //Desired outcome

它显示为

arr = {"1st", "2nd", "3rd", "fourth", "fifth", ... "tenth"}; //Actual outcome

我确信我的代码是错误的,并且我从空填充它的函数很好,但我只是想找到一种方法来删除它。我尝试了 free(),但我要么用错了它,要么这不是我应该使用的。

你们中有人有一个函数,不仅可以将字符串设置为“\0”,而且可以完全消除它吗?

<小时/>

感谢所有评论和回答的人,谢谢。

我所做的是使用文本文件、strtok 和 strdup 将文件中的单词读取到 char 双指针中。我不希望在“数组”中存储超过 5000 个单词,即使我的文件有 5001 个以上单词。

我就是这么做的。我成功地用文件中的字符串填充了内存。但如果我改变主意并尝试用较小的文件(约 30 个单词)填充内存,它会更改前 30 个文件,并让剩余的 4970 个文件保持原样,而我希望它们不存在。

最佳答案

您可以使用 realloc 函数更改 arr 变量的容量:arr = realloc(arr, 3 * sizeof(char*)) - 为 3 个元素重新分配内存。然后你应该将这 3 个元素分配给你的 arr

关于c - 如何在c中 "clear"数组为较小的数组腾出空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301374/

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