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

C 언어로 두 문자열을 서로 교환하는 방법

C 언어에서는 임시 변수와 루프를 활용해 두 문자열(문자 배열)의 내용을 서로 바꿀 수 있습니다. 아래 예제는 while 루프를 사용하여 두 문자열의 각 문자를 한 글자씩 교환하는 방법을 보여줍니다.

예제 코드

#include<stdio.h>
#include <string.h>
int main() {
    char st1[] = "My 1st string";
    char st2[] = "My 2nd string";
    char swap;
    int i = 0;
    while(st1[i] != '\0') {
        swap = st1[i];
        st1[i] = st2[i];
        st2[i] = swap;
        i++;
    }
    printf("After swapping s1 : %s\n", st1);
    printf("After swapping s2 : %s\n", st2);
    return 0;
}

실행 결과

After swapping s1 : My 2nd string
After swapping s2 : My 1st string

코드 설명

위 프로그램의 동작 원리를 살펴보면 다음과 같습니다.

  • 먼저 char 타입의 두 배열 st1st2에 각각 문자열을 초기화하고, 교환 시 값을 잠시 보관할 char 변수 swap과 인덱스 역할을 할 정수 변수 i를 선언합니다.
  • while 루프는 st1[i]가 널 종료 문자('\0')가 아닌 동안 반복됩니다. 즉, 첫 번째 문자열의 끝에 도달할 때까지 각 위치의 문자를 순서대로 처리합니다.
  • 루프 본문에서는 임시 변수 swap을 거쳐 st1[i]st2[i]의 값을 맞바꾼 뒤, 인덱스 i를 1 증가시켜 다음 문자로 이동합니다.
char st1[] = "My 1st string";
char st2[] = "My 2nd string";
char swap;
int i = 0;
while(st1[i] != '\0') {
    swap = st1[i];
    st1[i] = st2[i];
    st2[i] = swap;
    i++;
}

주의 사항

이 방식은 두 문자열의 길이가 같거나, 교환 대상이 되는 배열이 충분한 크기를 가지고 있을 때 안전하게 동작합니다. 만약 두 문자열의 길이가 다르다면, 짧은 문자열 기준으로만 교환이 이루어지므로 결과가 의도와 달라질 수 있습니다. 이 경우에는 strcpy() 함수와 임시 버퍼를 사용해 문자열 전체를 복사하며 교환하는 방법이 더 안전하고 일반적입니다.