2014-03-06 53 views
0
void squeeze(char str[], char c) 
{ 
    char newstr[150]; 
    int len = strlen(str); 
    char *new_ptr; 

    new_ptr = newstr; 

    for (int i = 0; i < len; i++) { 
     if (str[i]!=c) 
      *new_ptr=str[i]; 
     new_ptr++; 
    } 
    printf("The string without the character %c is: %s", c, newstr); 
} 

我試圖運行此代碼,但它顯示錯誤無法從字符轉換ARG爲const char在C

int strcmp(const char*,const char*); cannot convert arg from char to const char 

我知道,在strcmp原型,都通過了ARGS應的const char,但我不知道如何str[i]可以更改爲一個常數,相應地修改此代碼。
我試圖創建一個字符變量temp來保存str[i],但它也不工作。

我也是新的指針,所以即時通訊不知道如果做什麼是正確的。任何人都可以幫忙嗎?

+4

沒有'在你的代碼 –

+0

而strcmp'調用(後添加必要的'#includes'),我沒有得到任何警告與'GCC -std = C99 -C '牆裙' –

+1

'但我不知道如何可以改變str [i]爲什麼?也看起來這不是你定位的功能,你只需將'str'傳遞給'strcmp'.Also發佈更多的代碼。 –

回答

0

試試這個

void squeeze(char str[], char c) 
{ 
    char newstr[150]; 
    int len = strlen(str); 
    char *new_ptr; 

    new_ptr = newstr; 

    for (int i = 0; i < len; i++) { 
     if (str[i]!=c) 
      *new_ptr++ = str[i]; 
    } 
    *new_ptr = '\0'; 
    printf("The string without the character %c is: %s", c, newstr); 
} 
+0

我試過使用這段代碼。沒有顯示錯誤,但顯示的是相同的字符串,字符沒有從字符串中刪除。如果我的輸入是「深入水中」,字符是'e',則預期的產量是「下降中等」,但即時獲得輸出爲「深入水中」。 – user3387677

+0

@ user3387677我得到的輸出爲「dp down in watr」。請參閱http://ideone.com/Mv9HtG – BLUEPIXY

+0

/* code in main()*/ \t printf(「輸入字符串值:\ n」); \t gets_s(str,sizeof(str)); \t printf(「輸入要刪除的字符:\ n」); \t scanf_s( 「%C」,&ch); \t \t擠壓(STR,CH); – user3387677

相關問題