c - 替换句子中的多个空格

标签 c string

我最终得到了一些角色。尽管这种情况并不总是发生。有人可以告诉我如何纠正错误吗?

main()
{      
    char ar[100];
    char br[100];
    gets(ar);
    int c=strlen(ar);
    int b=0,d=0;
    while(b<c)
    {
        br[d]=ar[b];
        if(ar[b]==' ')
        {
            while(ar[b]==' ')
            {
                b++;
            }
            b--;
        }
        b++;   
        d++;  
    }

    printf("\n");

    puts(br);  
    getch();         
}

输入:

Hello    this is vinay.

预期输出:

Hello this is vinay.

我得到的输出:

Hello this is vinay.*

* 是一些右箭头字符,不知道如何描述它。

最佳答案

您忘记以 null 终止字符串,因此在打印字符串时,printf 停在内存末尾而不是字符串末尾,这对于用户来说意味着打印垃圾,在这里更正的代码:

int main() //main is supposed to return a int
{      
    char ar[100];
    char br[100];
    gets(ar);
    int c=strlen(ar);
    int b=0,d=0;
    while(b<c)
    {
        br[d]=ar[b];
        if(ar[b]==' ')
        {
            while(ar[b]==' ')
            {
                b++;
            }
            b--;
        }
        b++;   
        d++;  
    }
    br[d] = '\0'; //null terminate the string. `br[d]=0;` work too.
    printf("\n");

    puts(br);  
    getch();     
    return 0; //Convention for "all is good"    
}

关于c - 替换句子中的多个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23497518/

相关文章:

c - Golang 的字符串和 C Char* 转换为 For Range 时出现内存问题,退出状态 3221226356

c - 在C中,为什么某些函数名前缀为 "_ _"(双下划线)

c - 如何访问在主线程中定义的变量?

javascript - 一个函数,它将在数组中搜索字母并返回这些字母所在的位置

perl - Perl 中的字符串操作有多快?特别是串联和赋值

c - 我们可以从控制流图中得到什么信息?

c - 如何使用 mvinch 获取颜色信息

重复小数到分数计算器的 java.lang.StringIndexOutOfBoundsException

python - 字符串作为字节 python3

c++ - 用 ASCII 等效字符替换字符串中的所有非 ASCII 字符