2014-05-06 124 views
-1

我在最後收到一些字符。雖然它不會一直髮生。有人可以告訴如何糾正錯誤嗎?替換句子中的多個空格

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.* 

*是一些正確的箭頭人物不知道如何描述它。

+1

請張貼一個輸入,期望輸出和實際輸出的例子。 – DrakaSAN

+1

它似乎是學習如何使用調試器的時候。 – alk

+0

如果將其更改爲只在不是空格的情況下才插入字符,則可以減少必須跟蹤的索引數。現在你插入它,然後檢查它是否是一個使它更復雜的空間。 – Egg

回答

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

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

這太模糊了,不能釘它。 –

3

你忘了空終止您的字符串,因此打印字符串,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"  
}