2013-11-24 3 views
0

그래서 나는 C에서 다음과 같은 문자 배열이있는 경우 :char 배열에서 첫 번째 토큰을 제거하고 C에 나머지를 유지

"a b  c" // where "a", "b", and "c" can be char arrays of any length and the 
       // space between them can be of any length 

가 어떻게이 "A"토큰을 제거하지만, 나머지는 "BC를 저장할 수 있습니다 "숯불 포인터에?

char* removeAFromABC(char* a, char* abc) { 
    char* abcWithoutA[MAXIMUM_LINE_LENGTH + 1]; 

    int numberOfCharsInA = strlen(a); 

    strcpy(abcWithoutA, (abc + numberOfCharsInA)); 
    return abcWithoutA; 
} 
+1

방법에 대한'문자 * str_minus_sw = (+ your_array 2)'? –

+0

하지만 문제는 "sw"가 항상 첫 번째 문자가 아님 –

+0

코드가 간단합니다. –

답변

0

포스터 후 대답은 그가 무엇을 필요로하는지 명확히했다 편집 :

char* removeAFromABC(char* a, char* abc) 
{ 
    char *t; 

    t = strstr(abc, a); /* Find A string into ABC */ 
    if (t)    /* Found? */ 
    for (t+=strlen(a);(*t)==' ';t++); /* Then advance to the fist non space char */ 
    return t; /* Return pointer to BC part of string, or NULL if A couldn't be found */ 
}  
+0

죄송하지만 제 질문을 수정하여보다 명확하게 말씀 드렸습니다. –

+0

답변 됨 업데이트 됨 :) –

0

사용 strtok를()를 'SW'토큰을 포함하여 문자열을 토큰 화 :

는 지금까지 작동하지 않습니다 다음과 같은 방법을 구현했습니다. 루프에서 strcmp()를 사용하여 토큰이 'sw'인지 확인하고, 그렇다면 무시하십시오.

또는 'sw'이 항상 문자열의 처음 두 문자 인 경우 str + 2에서 시작하는 문자열을 토큰 화하여 해당 문자를 건너 뜁니다.

0
#include <stdio.h> 
#include<string.h> 

int main() 

{ char a[20]="sw $s2, 0($s3)"; 

    char b[20]; // char *b=NULL; b=(a+5); Can also be done. 

    strcpy(b,(a+5)); 

    printf("%s",b); 

} 

또는 위에서 언급 한 strtok 방법. strtok를 들어 볼 http://www.cplusplus.com/reference/cstring/strtok/

+0

사과드립니다.하지만 더 명확하게하기 위해 제 질문을 편집했습니다. –