修剪C中的char数组

时间:2013-02-23 03:28:29

标签: c scanf arrays trim

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

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

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

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

2 个答案:

答案 0 :(得分:1)

如果简单地进行原点更改,请在空格后面移动每个字符,然后重复直到数组结束。这是非常低效的。

如果要制作新副本,请创建一个长度相同的新数组,然后按照您的方式进行操作(复制所有非空格字符)。如果您同时复制\0字符,则不会出现字符串终止问题。这样效率更高。


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

您可以反复使用scanffscanf,将单独的单词输入到同一个数组中。这将照顾所有的空白。

答案 1 :(得分:1)

这是一个部分想法:你可以在char数组上进行第一次传递并计算空白,然后取字符串长度减去第二个数组的空白,然后在跳过空白处执行副本。

您还可以创建数组传递:

测试直到数组结束:

       我的(当前/指数)位置是空白的吗? (空格)

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

               然后索引++

               如果没有,请索引++

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