2014-08-28 244 views
-3

如何從c中的字符串中刪除特定字符?刪除c字符串中的字符

例如:如果字符串爲「ABCD」 我需要刪除索引1 的角色,那麼結果應該是,「ACD」

我嘗試:

void removeSymbol(char *line){ 
    int i,j; char c; 
    for(i=0;i<strlen(line);i++){ 
     c = *(line +i); 
     if(!(isdigit(c)||isalpha(c))){ strcpy((line+i),(line+i+1)); } 
    } 
    printf("%s\n",line); 
} 
+0

無效removeSymbol(字符*線){ INT I,J; char c;對於(i = 0; i tharakamd 2014-08-28 04:17:20

+1

可能重複[C從字符串中刪除字符](http://stackoverflow.com/questions/5457608/c-remove-character-from-string) – timrau 2014-08-28 04:17:38

回答

0

我已經改變removeSymbol API的原型。我希望這下面的代碼將滿足您的要求

void removeSymbol(char *line, int index) 
{ 
    //Added as per comments 
    if ((index > 0) && (index <= strlen (line))) 
    { 

     //index-> index which needs to be removed. 
     // +1 is added in memmove last argument to move '\0' character also 

     memmove (&line[index-1], line + index, strlen (line)-index +1); 
    } 

} 

int main(void){ 

    char symbol [] = "abcdefgh"; 
    removeSymbol (symbol, 8); 
    printf ("%s\n", symbol); 
} 
+1

我會添加一個檢查來確保'index'是在界限內。 '0 <= index 2014-08-28 04:56:16

+0

我會在函數**之外計算'strlen(line)'一次**,然後將它作爲附加輸入參數傳遞給函數。 – 2014-08-28 05:17:30

+1

C程序員應該從0開始計算數字。'index == 0'應該刪除'line'中的第一個字符。 – nodakai 2014-08-28 05:24:29

0
#include <stdio.h> 
#include <string.h> 
void removSymbol(char *,int); 
main() 
{ 
    int index=1; 
    removSymbol("abcd",index); 
} 
void removSymbol(char *line,int index) 
{ 
    int i; 
    for(i=0;i<strlen(line)-1;i++) 
    { 
     if(i<index) 
     { 
      *(line+i) = *(line +i); 
     } 
     else 
     { 
      *(line+i) = *(line+i+1); 
     } 

    } 
    *(line+i+1)='\0'; 
    printf("%s\n",line); 
} 
1
static inline void removeSymbol(char *line, size_t index){ 
    memmove(&line[index], &line[index+1], strlen(&line[index])); 
    //printf("%s\n",line); 
}