반응형

C언어 문자열 합치기 / 이어붙이기 (Join string)

1. 문자 배열 이어 붙이기

2. strcat()

 

 

strcat 없이 - Join string

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
35
36
37
38
39
40
41
42
/* Join strings */
#include <stdio.h>
 
// Get length of char array
int getLength(char str[]) {
    int len = 0;
    for (int i = 0; str[i] != '\0'; i++) len++;
    return len;
}
 
// Concat strfrom to strto
// Return strto
char *concat(char strto[], const char strfrom[]) {
    int tlen = getLength(strto);
    int i = 0;
    for (i = 0; strfrom[i] != '\0'; i++) strto[tlen + i] = strfrom[i];
    strto[tlen + i] = '\0';
    return strto;
}
 
int main() {
    char str1[] = "Hello";
    char str2[] = " ";
    char str3[] = "world!";
 
    int len = getLength(str1) + getLength(str2) + getLength(str3);
    char strto[len];
    char strto2[len];
 
    concat(strto, str1);
    printf("%s\n", strto);
 
    concat(strto, str2);
    printf("%s\n", strto);
 
    concat(strto, str3);
    printf("%s\n", strto);
 
    // Test and print result
    concat(concat(concat(strto2, str1), str2), str3);
    printf("%s\n", strto2);    
}

 

 

strcat 없이 - conacat string to a new char array

새로운 char 배열에 문자열 합치기

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* Join strings */
#include <stdio.h>
 
// Get length of char array
int getLength(char str[]) {
    int len = 0;
    for (int i = 0; str[i] != '\0'; i++) len++;
    return len;
}
 
// concat using a new char array
char *concat(char strto[], const char strfrom[], char newstr[]) {
    int tlen = 0;
    int i = 0;
    for (tlen = 0; strto[tlen] != '\0'; tlen++) newstr[tlen] = strto[tlen];
    for (i = 0; strfrom[i] != '\0'; i++, tlen++) newstr[tlen] = strfrom[i];
    newstr[tlen] = '\0';
    return newstr;
}
 
int main() {
    char str1[] = "Hello";
    char str2[] = " ";
    char str3[] = "C programming";
    char str4[] = " ";
    char str5[] = "world!";
 
    // concat using a new char array
    int len1 = getLength(str1) + getLength(str2);
    char newstr1[len1];
    concat(str1, str2, newstr1);
    printf("%s\n", newstr1);
 
    int len2 = getLength(newstr1) + getLength(str3);
    char newstr2[len2];
    concat(newstr1, str3, newstr2);
    printf("%s\n", newstr2);
 
    int len3 = getLength(newstr2) + getLength(str4);
    char newstr3[len3];
    concat(newstr2, str4, newstr3);
    printf("%s\n", newstr3);
 
    int len4 = getLength(newstr3) + getLength(str5);
    char newstr4[len4];
    concat(newstr3, str5, newstr4);
    printf("%s\n", newstr4);
 
    return 0;
}

 

 

strcat() 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* Join strings */
#include <stdio.h>
#include <string.h>
 
int main() {
    char str1[] = "Hello";
    char str2[] = " ";
    char str3[] = "world!";
    char str4[15];
    strcpy(str4, str1);
    // strcat(str4, str2);
    // strcat(str4, str3);
    strcat((strcat(str4, str2)), str3);
    printf("%s\n", str4);
}

 

반응형

'C 언어 > C언어 기초' 카테고리의 다른 글

[C언어 #14_2] 기름값 계산  (0) 2020.07.01
[C언어 #31] 비만도 (BMI) 계산  (0) 2020.06.28
[C언어 #29] 문자열 비교  (0) 2020.06.28
[C언어 #28] 문자열 복사  (0) 2020.06.28
[C언어 #27] 문자열 길이 구하기  (0) 2020.06.27