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타입의 두 배열st1과st2에 각각 문자열을 초기화하고, 교환 시 값을 잠시 보관할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() 함수와 임시 버퍼를 사용해 문자열 전체를 복사하며 교환하는 방법이 더 안전하고 일반적입니다.