strrev 문자열 거꾸로 뒤집기


strrev 문자열 거꾸로 뒤집기


이번에는 strrev 함수에 대해서 알아보겠다. 이 함수를 사용하려면 string.h 파일을 include 해야 된다.
strrev 함수의 원형을 이러하다.


1
char* strrev(char *string);
cs

사용법을 보자.

1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <string.h>
main()
{
    char string[100= "aossuper8.tistory.com";
    
    _strrev(string);
    puts(string);
}
cs

< 출력 >

사용법은 _strrev(거꾸로 뒤집혀질 문자열); 이렇게 사용하면 된다. 간단하다.
그럼 이 함수가 어떻게 동작하는지 구현을 보자.

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
#include <stdio.h>
//#include <string.h>
char* _strrev(char *string)
{
    char *ad = string;
    char *left = string;
    char v;
    while (*string++);
    string = string - 2;
    while (left < string) {
        v = *left;
         *left++ = *string;
        *string-- = v;
    }
    return ad;
}
main()
{
    char string[100= "aossuper8.tistory.com";
    
    puts(string);
    _strrev(string);
    printf("\n");
    puts(string);
}
cs

8행에서 string가 현재 '\0'에 위치하고 있다.
9행에서 현재 제일 뒤에 위치하고 있기 때문에 -2를 해야 m을 가르킨다.
10행에서

첫 번째 사이클

a < m

left 증가, string 감소

mossuper8.tistory.coa 

 두 번째 사이클 

o < o

left 증가, string 감소

mossuper8.tistory.coa

 세 번째 사이클 

s < c

left 증가, string 감소

mocsuper8,tistory.soa 

 네 번째 사이클 

s < .

left 증가, string 감소

moc.uper8.tistoryssoa


이런식으로 된다.

이정도 까지하면 코드가 이해 됬을거다.


댓글

Designed by JB FACTORY