c - 从字符串中删除多余的空格(就地)

标签 c pointers

好的,所以我之前发布了关于尝试(没有任何预建函数)删除额外空间的信息

"this is <insert many spaces!> a test"会回来的

"this is a test"

Remove spaces from a string, but not at the beginning or end

因为这是家庭作业,我没有要求完整的解决方案,一些好心的人为我提供了以下内容

"如果需要原地做,那么创建两个指针,一个指向被读取的字符,一个指向被复制的字符。当你遇到多余的空格时,然后调整'write'指针指向下一个非空格字符。将写入字符指向的字符复制到读取位置。然后将读写指针指向被复制字符之后的字符。"

问题是我现在想把我的电脑彻底砸成碎片,因为我对它非常恼火。当时我没有意识到我无法利用 char 数组,所以使用数组索引来做到这一点,我想我可以知道如何让它工作,但现在我只是使用指针,我发现它非常困难。我真的需要一些帮助,而不是完整的解决方案。到目前为止,这就是我正在做的;

1) 创建一个名为 write 的指针,所以我没有地方可以写入

2) 创建一个名为 read 的指针,所以我不知道从哪里读取

(这两个指针现在都将指向 char 数组的第一个元素)

while (read != '\0')
    if read == a space 
        add one to read
        if read equals a space now 
            add one to write
            while read != a space {
                 set write to = read
            }
                 add one to both read and write
    else 
        add one to read and write 
        write = read  

最佳答案

尝试自己在一张纸上一个字符一个字符地执行此操作,然后弄清楚您在做什么,然后将其转化为代码。

如果您仍然遇到问题,请先尝试做一些更简单的事情,例如只复制字符串字符而不用担心其中的“删除重复空格”部分 - 只是为了确保您没有犯傻其他地方的错误。

关于c - 从字符串中删除多余的空格(就地),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282481/

相关文章:

c - 使用strstr时如何表示 "if substring present in string do something"?

c - 如何在 C 中实现适用于 turtle 图形的函数?

c - 这段代码中的 fgets 有什么错误?

c - 为什么变量在递归调用中获得相同的地址?

c++ - Qt:在单独的函数中使用ui指针

pointers - 理解 Go 中的指针

c - 将 strlen() 与数组整数或 float 一起使用

c libxen api获取VDI大小

c - C 中的指针和字符串输出

c - 使用 C 返回数组