어떻게 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
반응형
'Research & Studies > Programming' 카테고리의 다른 글
[C언어] fopen함수-txt파일 이름을 변수로 입력받아 열기. (0) | 2016.12.30 |
---|---|
[알고리즘] a la russe 알고리즘 (곱셈 알고리즘) (0) | 2016.11.23 |
[c언어] fgets함수 개행(enter) 제거하기 (0) | 2016.11.18 |
[C언어]문자열을 txt파일을 hex로 변환하여 배열에 저장하기 (2) | 2016.11.09 |
댓글