2013-10-16 3 views
0

PHP의 str_repeat과 비슷한 기능을 직접 작성하고 싶습니다. 이 함수는 문자열 끝에 지정된 양의 문자를 추가하기를 원합니다. 문자열에 문자 추가 - NXC 언어

내가 정확히 (C++?)하지만, 대신 strcat()에 문자를 통과 할 것이다 어떤 언어 모르는 작동하지 않는 코드 ( string argument 2 expected!)

void chrrepeat(const char &ch, string &target, const int &count) { 
    for(int i=0; i<count; i++) 
    strcat(target, ch); 
} 
+0

연결 연산자를 사용할 수 있습니까? 예 :'target = target + ch' – shea

답변

0

입니다 널 종료 문자열의. 미묘한 차이점이 있지만, strcat은 null 바이트가 발견 될 때까지 더 많은 잘못된 메모리 위치에 행복하게 액세스합니다.

항상 strcat을 사용하는 대신 문자열의 끝까지 검색해야하므로 비효율적이며이 경우 사용자 지정 함수를 만들 수 있습니다.

가 여기에 C에서 내 구현의 :

void chrrepeat(const char ch, char *target, int repeat) { 
    if (repeat == 0) { 
     *target = '\0'; 
     return; 
    } 
    for (; *target; target++); 
    while (repeat--) 
     *target++ = ch; 
    *target = '\0'; 
} 

내가는 경우에 빈 문자열을 반환했다 repeat == 0 그것이 온라인 설명서에 따라, PHP에서 어떻게 작동하는지 그 때문에.

이 코드는 대상 문자열에 반복을 수행하기위한 충분한 공간이 있다고 가정합니다. 이 함수의 서명은 꽤 자기 설명해야하지만, 여기를 사용하는 몇 가지 예제 코드입니다 :

int main(void) { 
    char test[32] = "Hello, world"; 
    chrrepeat('!', test, 7); 
    printf("%s\n", test); 
    return 0; 
} 

이 인쇄 : 문자열

Hello, world!!!!!!! 
+0

NXT 레거 벽돌의 경우 * 정확히 C *가 아닙니다. 그것은 이상한 문자열 구현 ('string'은'char * '이 아닙니다)의 종류를 가지고 있습니다. –

+0

하지만이 답변을 삭제하지 마십시오. 다른 사람이 Google에 의해 여기로 리디렉션되는 것을 도울 수 있습니다. –

+0

물론, 나는 그것을 제거하지 않을 것이다. 더 이상 당신을 도울 수 없어요, 전에이 언어에 대해 들어 본 적이 없어요. –

0

변환 문자는.

void chrrepeat(char ch, string &target, const int count) { 
    string help = "x"; // x will be replaced 
    help[0] = ch; 
    for(int i=0; i<count; i++) 
    strcat(target, help); 
}