C 언어에서 미리 정의된 라이브러리 함수 없이 문장을 거꾸로 출력하는 프로그램을 작성해 보겠습니다. for 루프를 활용하면 입력받은 문자열을 아주 간단하게 역순으로 출력할 수 있습니다.
프로그램 1 – for 루프를 이용한 문자열 뒤집기
이 프로그램은 getchar() 함수로 콘솔에서 한 글자씩 입력을 받아 배열에 저장한 후, 배열의 끝에서부터 처음까지 putchar() 함수로 차례대로 출력하는 방식으로 동작합니다.
#include<stdio.h>
int main(){
char stmt[100];
int i;
printf("enter the message:\n");
for(i=0;i<stmt;i++){
stmt[i]=getchar(); // 개행 문자(Enter)를 누를 때까지 콘솔에서 한 글자씩 읽음
if(stmt[i]=='\n')
break;
}
printf("the reverse statement is:\n");
for(i--;i>=0;i--) // 문자를 역순으로 하나씩 출력
putchar(stmt[i]);
putchar('\n');
return 0;
}
실행 결과
enter the message: Hi welcome to my world the reverse statement is: dlrow ym ot emoclew iH
코드 동작 원리
- 입력 단계: 첫 번째 for 루프가 getchar()로 한 문자씩 읽어 stmt 배열에 저장하며, 개행 문자 '\n'을 만나면 break 문으로 반복을 종료합니다.
- 출력 단계: 루프가 종료된 직후 i--로 마지막 문자의 위치부터 시작하여, 두 번째 for 루프가 인덱스 0까지 거꾸로 순회하면서 putchar()로 문자를 하나씩 출력합니다.
- 이처럼 별도의 문자열 처리 함수 없이도 입력된 문장이 그대로 뒤집혀 화면에 나타납니다.
프로그램 2 – strrev() 라이브러리 함수 사용
이번에는 string.h 헤더 파일에 포함된 strrev() 라이브러리 함수를 사용하여 문자열을 뒤집는 C 프로그램을 작성해 보겠습니다.
#include<stdio.h>
#include<string.h>
void main(){
//두 개의 문자열 선언//
char result[50],string[25];
//뒤집을 문자열 입력//
printf("Enter String to be reversed : ");
gets(string);
//라이브러리 함수로 문자열 뒤집기//
strrev(string);
printf("The reversed string is : ");
puts(string);
}
실행 결과
Enter String to be reversed : Hi welcome to tutorials Point The reversed string is : tnioP slairotut ot emoclew iH
참고 사항
- strrev() 함수는 C 표준 라이브러리에 포함되어 있지 않으며, Turbo C나 MSVC 등 일부 컴파일러에서만 제공됩니다. GCC 같은 다른 환경에서는 직접 구현해서 사용해야 합니다.
- gets() 함수는 버퍼 오버플로 위험 때문에 C11 표준에서 제거되었으므로, 실제 프로젝트에서는 fgets() 사용을 권장합니다.