포인터를 사용하여 문자열 뒤집기

CBeginner
지금 연습하기

소개

포인터는 메모리에 직접 접근할 수 있게 해주며, 포인터를 사용함으로써 메모리 내 변수와 배열의 값과 주소에 접근하고 조작할 수 있습니다. 이 랩에서 구축할 프로그램은 포인터 변수를 사용하여 주어진 문자열을 뒤집을 것입니다.

참고: 코딩을 연습하고 gcc 를 사용하여 컴파일하고 실행하는 방법을 배우기 위해 직접 ~/project/main.c 파일을 생성해야 합니다.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

문자열 변수 선언

먼저 두 개의 char 배열을 선언하는 것으로 시작합니다: 하나는 원래 문자열용이고, 다른 하나는 뒤집힌 문자열용입니다.

char str[100];
char rev[100];

포인터 변수 선언

이제 두 개의 포인터 변수를 선언합니다: 하나는 문자열 'str'의 첫 번째 요소를 가리키고, 다른 하나는 뒤집힌 문자열 'rev'의 첫 번째 요소를 가리킵니다.

char *sptr = str;
char *rptr = rev;

사용자로부터 입력 받기

scanf 함수를 사용하여 사용자가 뒤집고 싶은 문자열을 입력하도록 요청합니다:

printf("Enter a string: ");
scanf("%s", str);

문자열 끝 찾기

문자열을 역순으로 순회하기 시작하려면 문자열의 끝을 찾아야 합니다. sptr이 문자열의 끝에 있는 널 문자 (null character) 를 가리킬 때까지 while 루프를 사용하여 증가시킵니다.

while(*sptr)
{
   sptr++;
}

문자열 뒤집기

이제 while 루프를 사용하여 문자열 str을 역순으로 순회합니다. sptr을 감소시켜 널 문자에서 문자열의 마지막 문자로 이동하고, 문자열의 각 요소에 대해 * 연산자를 사용하여 뒤집힌 문자열 rev에 값을 저장합니다.

while(sptr >= str)
{
   *rptr = *sptr;
   rptr++;
   sptr--;
}

뒤집힌 문자열 끝에 Null 문자 추가

뒤집힌 문자열의 끝에 도달했습니다. 뒤집힌 문자열의 끝에 널 문자 (null character) 를 추가해야 합니다.

*rptr = '\0';

뒤집힌 문자열을 원래 문자열로 복사

이제 뒤집힌 문자열을 원래 문자열에 복사합니다.

strcpy(str, rev);

뒤집힌 문자열 출력

마지막으로, 뒤집힌 문자열을 출력합니다.

printf("Reversed string: %s\n", str);

요약

이 랩에서는 포인터 변수를 사용하여 주어진 문자열을 뒤집는 방법을 배웠습니다. 포인터는 메모리에 직접 접근할 수 있게 해주며, 이를 통해 메모리에 있는 변수와 배열의 값과 주소에 접근하고 조작할 수 있습니다. while 루프를 사용하여 문자열을 역순으로 순회하고, 뒤집힌 문자열을 새로운 문자 배열에 저장했으며, 뒤집힌 문자열의 끝에 널 문자 (null character) 를 추가했습니다. 마지막으로, 뒤집힌 문자열을 원래 문자열에 복사하고 출력했습니다.