본문 바로가기

System Programmings/C

[C] 문자열 역순으로 바꿔저장하기 (한/영)

반응형
#include <stdio.h>

void reverseA(char *s);
void reverseB(char *s);
int main(void)
{
	char a[]="abcdef"; //*a="abcdef"; << 에러난다.
	char b[]="감자"; //*b="감자"; << 에러난다.

	reverseA(a);
	printf("\n");
	printf("%s", a);
	reverseB(b);
	printf("\n");
	printf("%s", b);

	return 0;
}

void reverseA(char *s) // 영문일 경우엔 1바이트씩 재귀함수로
{
	int i;
	char tmp;
	for(i=0; i<strlen(s)/2; i++)
	{
		tmp=s[i];
		s[i]=s[strlen(s)-i-1];
		s[strlen(s)-i-1]=tmp;
	}

}

void reverseB(char *s)
{
	int i;
	char tmp1, tmp2;
	for(i=0; i<strlen(s)/4; i+=2)  //한글은 2바이트기 때문에 2를 2등분해야되기 때문에 4로 나눈다.
	{
		tmp1=s[i];
		tmp2=s[i+1];
		s[i]=s[strlen(s)-i-2];
		s[i+1]=s[strlen(s)-i-1];
		s[strlen(s)-i-2]=tmp1;
		s[strlen(s)-i-1]=tmp2;
	}
}
반응형