在C中修剪一个char数组



我正在处理一项任务,我注意到我的编码任务中有一个问题。我不清楚如何解决这个问题,可能是因为睡眠不足,但无论如何。我需要为这个任务修剪一个它的空白字符数组。

我想到的解决方案包括第二个char数组,只需将非空白空间复制到该数组中,我就完成了。但是,我怎么能在不知道其大小的情况下创建一个char数组,因为当时我还不知道它的大小。我仍然需要修剪它,以便知道需要将多少字符复制到新数组中,这在分配时有所不同

我知道这里有很多关于stackoverflow的好问题,但我认为这更多地与思考过程有关,而不是正确的语法。

我的第二个问题是如何对char数组执行fscanf/fgetc,因为它需要流,给它一个指针而不是流就足够了吗?

如果只是在适当的位置进行更改,请将每个chracter向后移动一个空格,然后重复,直到数组结束。这是非常低效的。

如果要制作新副本,请制作一个相同长度的新数组,然后按照原来的操作(复制所有非空格字符)。如果您也复制字符,则不会出现字符串终止问题。这要高效得多。


根据您的评论,您似乎可以选择以任何形式输入数组。然后,我建议您不要在以后进行文本操作,只需以所需的形式输入字符串即可。

您可以简单地重复使用scanffscanf,将单独的单词输入到同一个数组中。这样可以处理所有的空白区域。

这里有一个部分想法:您可以对char数组进行第一次遍历并计算空格,然后将字符串长度减去第二个数组的空格,然后跳过空格执行复制。

您还可以创建一个通过数组的通道:

测试直到数组结束:

我的(当前/索引)职位是空白的吗?(空格)

如果是这样的话,获取下一个可用的非空值并将其放在那里

则索引++

如果没有,索引++

不确定第二个,我会做一些检查,看看我是否也能在那里找到一个好的答案。

相关内容

最新更新