본문 바로가기
Research & Studies/Programming

[C언어]문자열 2개 합치기 (How to concatenate 2 strings?)

by ITholic-sicm 2016. 11. 18.

 

 

어떻게 2개의 문자열을 이어 붙일 수 있을까?

(How to concatenate 2 strings?)

 

  오늘 간략하게 이야기해볼 주제는 2개의 문자열을 합치는 방법이다. 숫자가 아닌 문자열 2개를 연결하여(Concatenate) 나타내고 싶을때 어떠한 방법을 사용할 수 있을까?


  먼저 concat이라는 함수를 정의해 준다. concat함수 안에는 2문자열의 길이를 정하기 위해 malloc 함수를 통해 메모리에 동적할당을 하고, memcpy함수를 통해 두 문자열을 이어 붙인다.

 

  main함수에는 두 문자열을 입력받기 위해 배열 A, B를 설정하고 fgets함수로 배열에 문자열을 저장한다.


  마지막으로 char* s = concat(A, B);을 통해 이어진 두 문자열을 출력함을 확인한다.

 


 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
 
char* concat(const char *s1, const char *s2)
{
    const size_t len1 = strlen(s1);
    const size_t len2 = strlen(s2);
    char *result = (char*)malloc(len1 + len2 + 1);//+1 for the zero-terminator
                                           //in real code you would check for errors in malloc here
    memcpy(result, s1, len1);
    memcpy(result + len1, s2, len2 + 1);//+1 to copy the null-terminator
    return result;
}
 
int main()
{
    const char A[1024= {0,};
    printf("String1:");
    fgets((char*)message, sizeof(message), 
    
    const char identity[128= { 0, };
    printf("String2:");
    fgets((char*)identity, sizeof(identity), stdin);
 
    char* s = concat(message, identity);
    printf("%s", s);
    free(s);
 
 
    return 0;
}
 
 
cs

 

 

결과​ :

 

 


변수 s안에 AAAA와 BBBB가 입력되어있음을 알수 있다. fgets함수는 마지막에 자동으로 개행을(enter) 시행하므로

AAAA

BBBB


와 같이 출력된다. 이를 AAAABBBB로 이어붙이고 싶다면 fgets의 개행을 없애주면되는데 이는 다음에 포스트에서 다룰 예정이다.


참고자료:

http://stackoverflow.com/questions/8465006/how-to-concatenate-2-strings-in-c

 

반응형

댓글