문자(영문,한글,숫자,공백포함)를 거꾸로 출력시키는 프로그램.
횃눈썹
질문 제목 : if문 안에 내용을 바꿨는데 출력은 깨져서 나옵니다... 왜그런걸까요?간단하게 입력되는 영문,숫자,한글,띄어쓰기.. 등등을 모두 거꾸로(reverse) 출력되게 하는
cmd출력프로그램입니다. 안에 내용을 결과가 같게 바꿔줬는데 에러,경고없이 실행은 잘 되는데
출력이 깨져서 나오네요.....
--첫번째, 영문/한글/숫자 리버스만들기 ( ver 1 )-------------------------------
/* 영문,숫자,한글,공백 포함 모든 문자들을 reverse시켜서 출력시키는 프로그램 */
#includestdio.h
#includestring.h
#includestdlib.h
void rever1(char*);
main()
{
char line[] = 가나다라마바사 abcdefg 12345;
rever1(line);
}
void rever1(char *line) // nomal version
{
int i = 0;
int len = strlen(line);
int j = len - 1;
char *tline = (char*)malloc(len + 1);
strcpy(tline,line);
while(tline[i])
{
if ( tline[i] & 0x80 )
{
line[j-1] = tline[i];
line[j] = tline[i+1];
i += 2;
j -= 2;
}
else
line[j--] = tline[i++];
}
free(tline);
printf(%s\n,line);
}
------------------------------------------------------------------
여기에서 if안에 내용
if ( tline[i] & 0x80 )
{
line[j-1] = tline[i];
line[j] = tline[i+1];
i += 2;
j -= 2;
}
else
line[j--] = tline[i++];
}
을 밑에 내용
if ( tline[i] & 0x80 )
{
line[i] = tline[j-1];
line[i+1] = tline[j];
i += 2;
j -= 2;
}
else
line[i++] = tline[j--];
으로 바꿨는데... 화면이 깨져서 나옵니다... ;ㅅ;
물론 위에서 언급했다시피, 에러 및 경고는 뜨지않습니다...
line배열의 끝의 방을 잡아서 1씩 혹은 2씩 감소시키는거랑...
line배열의 첫방을 잡아서 1씩 혹은 2씩 증가시키는거랑.. 결과는 같을거같은데
출력이 이상하게 뜨네요 ;ㅅ;
왜그런지 설명 부탁드려요 ㅠㅠ
-
로운
if ( tline[j] & 0x80 )