Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 for 루프로 문자열 역순 출력하기 – 예제 프로그램 2가지


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() 사용을 권장합니다.