# 문자열 뒤집기
## 문제
주어진 뼈대코드는 포인터를 사용하여 문자열을 뒤집고있다. 프로그램의 수행과정을 주석으로 분석하시오.
## 출력 예
```
str: "Do not learn C Language!"
reverse: ""
str.length:
```
## 뼈대코드
```
#include <stdio.h>
void reverse(char *);
int string_length(char *);
void swap(char *, char *);
int main(int argc, char *argv[])
{
char str[] = "Do not learn C Language!";
reverse(str);
printf("%s\n", str);
printf("length: %d\n", string_length(str));
return 0;
}
void reverse(char *arr)
{
int length = string_length(arr);
int i = 0;
int j = (length - 1) - i;
while (i < j)
{
printf("[%2d, %2d] => ", i, j);
swap(arr + i, arr + j);
printf("%s\n", arr);
i++;
j--;
}
}
int string_length(char *s)
{
int length = 0;
while (*s++ != NULL)
{
length++;
}
return length;
}
void swap(char *a, char *b)
{
char tmp = *a;
*a = *b;
*b = tmp;
}
```