2014-08-28 3 views
-3

c의 문자열에서 특정 문자를 제거하는 방법은 무엇입니까?C 문자열의 문자 제거

예는 :

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

+1

[C에서 문자열 삭제] 가능한 복제본 (http://stackoverflow.com/questions/5457608/c-remove-character-from-string) – timrau

답변

0

내가 변경 : 문자열 "ABCD" 경우 내가, 결과는

내 시도가 "ACD"해야 인덱스 1 의 문자를 제거해야 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 <= 인덱스

+0

그리고 ** ** once ** 함수 외부에서'strlen (line)'을 계산 한 다음 추가 입력 인수로 함수에 전달합니다. –

+1

C 프로그래머는 0부터 숫자를 계산해야합니다.'index == 0'은'line'의 첫 문자를 제거해야합니다. – nodakai

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