1

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

我想到的解决方案涉及第二个 char 数组,只需将非空格复制到该数组即可。但是我如何在不知道它的大小的情况下创建一个 char 数组,因为那时我还不知道它的大小。我仍然需要修剪它才能知道需要将多少个字符复制到新数组中,这在分配中有所不同

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

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

4

2 回答 2

1

如果简单地进行就地更改,则将每个字符移回一个空格,然后重复直到数组的末尾。这是非常低效的。

如果制作一个新副本,请制作一个相同长度的新数组,然后像以前一样做(复制所有非空格字符)。如果您也复制\0字符,则不会出现字符串终止问题。这效率更高。


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

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

于 2013-02-23T03:35:14.473 回答
1

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

您还可以通过数组创建一个传递:

测试直到数组结束:

我的(当前/索引)位置是空白的吗?(空间)

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

然后索引++

如果没有,索引++

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

于 2013-02-23T03:43:24.223 回答