2015-01-20 4 views
0

두 문자열을 연결하는 함수/일반적인 방법이 있습니까? string2가 string1에 지정된 위치에 나타 납니까? 문제는 충분히 명확하지 않으면문자열 연결 세부 사항

는이 예를 살펴 :

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

int main(void) 
{ 
    char str[100] = "I love Gyros"; 

    concatenate(&str[2], "dont "); 

    printf(str); 

    return 0; 
} 

출력 :

I dont love Gyros 

답변

4

두 문자열 사이의 연결에 대한 기능/일반적인 방법이 있습니까, 문자열 2는 string1에 지정된 위치에 나타 납니까?

아니요, 없습니다.

많은 접근법을 사용하여 원하는 것을 달성 할 수 있습니다. 한 가지 방법은 sprintf을 사용하는 것입니다.

char str[100]; 
sprintf(str,"I %s love Gyros", "don't"); 

또 다른 방법은 당신이 필요로하는 양만큼 오른쪽으로 str의 내용을 이동하고 중간 요소의 값을 설정하는 것입니다.

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

void insertInString(char* str1, size_t pos, char const* str2) 
{ 
    size_t len1 = strlen(str1); 
    size_t len2 = strlen(str2); 
    size_t i = 0; 

    // Shift the contents of str1 
    for (i = len1; i >= pos; --i) 
    { 
     str1[i+len2] = str1[i]; 
    } 

    // Now place the contents of str2 starting from pos 
    for (i = 0; i < len2; ++i) 
    { 
     str1[i+pos] = str2[i]; 
    } 
} 

int main() 
{ 
    char str[100] = "I love Gyros"; 
    insertInString(str, 2, "don't "); 
    printf("%s\n", str); 
    return 0; 
} 
+0

아 감사합니다. 나는 이것을 나의 실제 필요에 맞게 구성했다. –

0

원하는 기능을 수행 할 수있는 기능이 없습니다. 함수가 잘 작동하도록 연결하는 것이 아니라, 프로토 타입을 사용하여 insert_phrase 함수를 사용하는 것 ... char * insert_phrase (char * string, char * phrase, size_t after_word); 이제 예제를 읽을 수 있습니다.

Insert_phrase (str, "do not", 1);

실제로 사용하는 연결 함수는 str에 삽입하지 말고 두 인수 모두에 대한 어휘 분석을 수행해야합니다.