替换句子中的多个空格

时间:2014-05-06 14:26:36

标签: 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.*

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

2 个答案:

答案 0 :(得分:3)

你忘了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"    
}

答案 1 :(得分:-1)

Error will be somwhere here..b++; b--; b++;

if(ar[b]==' ')
    {
        while(ar[b]==' ')
        {
            b++;
        }
        b--;
    }
    b++;