从字符串中删除空格,但不在开头或结尾处删除空格

leo*_*leo 11 c pointers

我试图从C中的字符串中删除空格,而不是从结尾,也不是从头开始,只是字符串中的多个空格

例如

hello  everyone this     is a test
Run Code Online (Sandbox Code Playgroud)

你好和每个人之间有两个空格,其中有五个空格.最终我想要从5中删除2和4中的1个空格,因此每个间隙都有1个空格.合理?

这就是我要做的事情:

  • 创建一个指针,将其指向元素1 char [0]的字符串.

  • 在字符串的长度上执行for循环

  • 然后我的逻辑是,如果我在[i]的指针是一个空格而我的指针在元素[i + 1]空间然后做某事

我不太清楚这里有什么好的解决方案,请记住我不会使用任何预先构建的功能.有没有人有任何想法?

Goz*_*Goz 4

一种方法是就地进行。从头到尾循环遍历字符串。存储一个写指针和一个读指针。每个循环写指针和读指针前进一位。当您遇到空格时,它会像平常一样传输,但然后循环读取指针每次递增,直到找到非空格(或者显然是字符串的末尾)。不要忘记在末尾添加“\0”,现在您将拥有相同的字符串,但不含空格。