代码之家  ›  专栏  ›  技术社区  ›  Kipt Scriddy

修剪C中的char数组

  •  1
  • Kipt Scriddy  · 技术社区  · 13 年前

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

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

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

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

    2 回复  |  直到 13 年前
        1
  •  1
  •   asheeshr    13 年前

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

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


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

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

        2
  •  1
  •   Raymond Schenk    13 年前

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

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

    测试直到阵列结束:

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

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

    然后索引++

    如果没有,索引++

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