본문 바로가기
programming/C

[C언어] 포인터 사용하여 배열 이어붙이기,정렬확인,비교

by 몽구스_ 2019. 10. 15.
728x90
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
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
int stringCompare(const char *s1, const char *s2)
{
    while (*s1 || *s2)
    {
        if(*s1 != *s2)
        {
            if(*s1 > *s2)
                return -1;
            else
                return 1;
        }
        s1++;
        s2++;
    }
    return 0;
}
void stringCat(char *s1, const char *s2)
{
    while (*s1)
        s1++;
    while (*s2)
    {
        *s1 = *s2;
        s2++;
        s1++;
    }
    *s1 = '\0';
}
void stringChange(char *s, char ch, char newCh)
{
    while (*s)
    {
        if(*== ch)
            *= newCh;
        s++;
    }
}
int main(void)
{
    char name1[20];
    char name2[20];
 
    printf("Enter the first name: ");
    scanf("%s", name1);
    printf("Enter the second name: ");
    scanf("%s", name2);
 
    if (stringCompare(name1, name2) == 0)
        printf("두개의 이름은 같다\n");
    else if (stringCompare(name1, name2) == 1)
        printf("두개의 이름은 다르며 정렬되어있다\n");
    else
        printf("두개의 이름은 다르며 정렬되어있지않다\n");
 
    stringCat(name1, name2);
    printf("The concatenated name is %s\n", name1);
 
    stringChange(name1, 'u''x');
    printf("The changed name is %s\n", name1);
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

int stringCompare(const char *s1, const char *s2)

: 문자열 비교해서 같은지 다른지 알려줌, 만약 다르면 1번째,2번째 정렬확인

 

void stringCat(char *s1, const char *s2)

: 문자열 이어붙이지 const가 s2이니까 그건 그대로 두고 s1의 뒤에 s2를 붙임.

결과적으로 s1만 변함.

앞부분은 그대로지만 뒤가 변하니까 s2를 늘려가면서 붙여줄때 s1도 늘려줌.

 

void stringChange(char *s, char ch, char newCh)

: 문자열안의 ch를 newCh로 바꿔줌.

 

 

기본개념을 이용해 풀 수 있는 문제.

그리고 이것을 포인터를 사용하여 푼다. 

처음에 포인터가 헷갈릴 수 있지만 *s2를 배열자체로 보는 시각이 필요함.

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

댓글