strrev 문자열 거꾸로 뒤집기
- 프로그래밍/C/C++
- 2018. 7. 18.
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 |
이런식으로 된다.
이정도 까지하면 코드가 이해 됬을거다.