删除c字符串中的字符

问题描述:

如何从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://*.com/questions/5457608/c-remove-character-from-string) – timrau 2014-08-28 04:17:38

我已经改变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 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

#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); 
} 

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