반응형
#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;
}
}
반응형
'System Programmings > C' 카테고리의 다른 글
[C] 문자열 복사, 대체, 삽입 (strncpy(), mommove(), memcpy(), strcat(), strncat()) (0) | 2010.08.07 |
---|---|
[C] 문자열 -> 숫자 / 숫자 -> 문자열 (atoi(), atof(), strtod(), strtol(), strtoul()) (0) | 2010.08.06 |
[C] 문자열 역순으로 출력하기 (한/영 재귀함수 포함) (0) | 2010.08.06 |
[C] 대소문자 변환 tolower()과 toupper() (0) | 2010.08.06 |
[C] strlen을 직접 만들어 보면? (0) | 2010.08.06 |