진짜 간단한거라 올리기도 죄송시러운데 ㄷㄷ;; 한글 깨지는 것 때문입니다!

onam3125의 이미지

#include <stdio.h>
 
int main()
{
	int i,j;
	int count=0;
 
	char letter[10];
 
	printf("값 입력 ㄱㄱ : ");
	scanf("%s", &letter);
 
	for(i=0; i<10; i++)
	{
		if(letter[i]==NULL)
		{
			break;
		}
		else
		{
			count++;
		}
	}
 
 
 
	for(j=10-count; j>=0; j--)
	{
		printf("%c", letter[j]);
	}
 
 
	return 0;
}

korea 라고 치면 aerok라고 정상출력 되는데
한글 이라고 치면 이상한 중국어가 나오네요 ;;
뭐 잘못한거죠 ㄷㄷ

snowall의 이미지

영문자는 1바이트고 한글은 2바이트라서 그런 듯 싶은데요

2바이트 문자를 입력 받았을 때는 2바이트씩 끊어서 처리하도록 고치셔야 할 듯.

피할 수 있을때 즐겨라! http://melotopia.net/b

gurugio의 이미지

한글을 처리하실때는 char가 아니라 wchar_t 등으로 유니코드 타입으로 처리하셔야합니다.
locale처리가 그래서 어렵지요.

gurugio의 이미지

세벌의 이미지

여러분이 답 주신 것처럼 간단한 게 아니예요. 질문하신 분은 간단한 거로 생각하셨겠지만...

kgcrom의 이미지

http://en.wikipedia.org/wiki/UTF-8
표를 보시면 Hangul 은 3byte입니다.

utf8,euckr, 완성형/조합형에 대한 판단을 하고 거기에 맞게 reverse시켜줘야 될것같네요.

정작 말하는 저도 한글코드에 대해서 잘 모릅니다.
별수 있나요;; 공부해야죠...

흘러가고있는 지금 이 시간에 충실하자.

gurugio의 이미지

http://kldp.org/node/79934
이걸 참고하시면 될것 같습니다.
환경 설정도 중요하네요.

지금은 리눅스 머신이 없네요.
내일 출근해서 저도 해보고 다시 답글을 올리겠습니다.
저도 궁금하네요.

sheep의 이미지

off-topic 이지만...

뭐 한글 문제가 이리 복잡한 거였습니까?

저도 간단한 것 인줄 알았는데... 아...

--------
From Buenos Aires, Argentina
No sere feliz pero tengo computadora.... jaja
닥치고 Ubuntu!!!!!
To Serve My Lord Jesus
blog: http://sehoonpark.com.ar
http://me2day.net/sheep

gurugio의 이미지

#include 
#include 

int main()
{
int i,j;
int count=0;

char letter[10];

printf("한글");

printf("값 입력 ㄱㄱ : ");
scanf("%s", &letter);

for(i=0; i<10; i++)
{
printf("%c\n", letter[i]);
if(letter[i]==NULL)
{
break;
}
else
{
count++;
}
}

printf("count=%d\n", count);

printf("%s\n", letter);

for(j=0; j {
printf("%c\n", letter[j]);
}


return 0;
}

이렇게 만들어봤는데요

~ $ ./a.out
한글값 입력 ㄱㄱ : 가나다
코드값~~
코드값~~
..
count=9
가나다
코드값~~

이렇게 실행이 됩니다.
즉 printf나 scanf는 코드에 상관없이 실행은 잘 됩니다.

gurugio의 이미지

혹시 글자가 깨지는게 터미널 설정이나 소스 파일 자체가 utf8이 아닌 euc-kr이라서인지 확인해보세요.
터미널 설정과 소스 파일 인코딩이 동일해야 글자가 보이겠지요.

그리고 utf8 인코딩에서 한글 한 글자는 3바이트가 될 수 있다고 기억납니다. (정확히는 기억이 안납니다.)
따라서 char 타입의 배열에서 한 바이트씩 출력하면 코드값이 나오지 한글이 나올 수는 없습니다.

char 타입의 배열에서 한글을 출력하려면 다음과 같이 wchar_t 타입으로 변환해서 출력해야할것 같습니다.
세부적으로 처리하려면 utf8 스펙 등을 보거나 iconv 에서처럼 테이블로 만드는등 복잡한 처리가 필요할것 같습니다.
아니면 wprint 시리즈같이 유니코드에 대응된 라이브러리를 활용해야지요.

#include 
#include 

int main()
{
int i,j;
int count=0;

char letter[10];

printf("한글");

printf("값 입력 ㄱㄱ : ");
scanf("%s", &letter);

for(i=0; i<10; i++)
{
printf("%c\n", letter[i]);
if(letter[i]==NULL)
{
break;
}
else
{
count++;
}
}

printf("count=%d\n", count);

printf("%s\n", letter);

for(j=0; j {
wchar_t ccc = *(wchar_t *)&letter[j];
wprintf(L"%c\n", ccc);
}


return 0;
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.