Contents

Develop
2015.11.10 15:49

[c] 한글 문자열 출력

조회 수 3140 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

영어는 1byte, 한글은 2byte 차지한다.

따라서 문자열 처리할 때 한 포인터씩 출력을 하게 되면 한글이 깨지는 현상이 발생한다.

예를 들어 한글과 영어가 섞여있는 문자열을 출력할 때 다음과 같은 소스를 이용하면 한글이 깨져서 출력된다.

 

#include <stdio.h>
#include <stdlib.h>

const int MAX_SIZE = 1000;


int main(){
    FILE *fp = fopen("test.txt","r");
    char* inp = (char*)malloc(sizeof(char)*MAX_SIZE);
    int i;

    while(fgets(inp, MAX_SIZE, fp)){

        printf("%s" , inp);

        for(i = 0 ; i < strlen(inp) ; i++){
            printf("%c  " , inp[i]) ;
        }
        printf("\n");
    }
    
    return 0;
}

 

 

그렇다면, 한글과 영어를 판단해서 영어는 1byte, 한글은 2byte를 출력해야 할텐데,

어떻게 하면 한글인지 영어인지 확인할 수 있을까?

 

#include <stdio.h>
#include <stdlib.h>

const int MAX_SIZE = 1000;

typedef enum {false, true} bool;

int main(){
    FILE *fp = fopen("test.txt","r");
    char* inp = (char*)malloc(sizeof(char)*MAX_SIZE);
    int i;
    bool HANGUL = false;


    while(fgets(inp, MAX_SIZE, fp)){

        printf("%s" , inp);

        for(i = 0 ; i < strlen(inp) ; i++){
            if((inp[i] & 0x80) == 0x80) HANGUL = true; //한글인지 확인
            if(!HANGUL)printf("%c  " , inp[i]) ; //아니면 그냥 출력
            else{
                printf("%c%c" , inp[i] , inp[i+1]); //한글이면 2byte 출력
                i++;
            }
            HANGUL = false;
        }
        printf("\n");
    }
    
    return 0;
}

 

위의 소스는 각 char 마다 한글인지 아닌지를 판단해서 한글인 경우 2byte를 출력하게 해준다.

 


?

  1. 해커스랩 깨기.. 후후.. ㅋㅋ

    Date2013.04.23 CategorySystem/OS Byhooni Views19811
    Read More
  2. 플라스터(Plaster) 수업 내용

    Date2016.05.24 CategoryEtc Byhooni Views0
    Read More
  3. 프로그램 문서 관리 (Doxygen)

    Date2013.04.23 CategoryDevelop Byhooni Views17837
    Read More
  4. 프로그래밍에서 foo, bar 함수의 유래

    Date2013.06.25 CategoryDevelop Byhooni Views22888
    Read More
  5. 프로그래밍 소스 관련 사이트..

    Date2013.04.23 CategoryDevelop Byhooni Views17902
    Read More
  6. 페이팔에서 돈 찾기 (Paypal withdraw)

    Date2014.02.20 CategoryDevelop Byhooni Views12753
    Read More
  7. 티스토리 테이블 html,css 구문

    Date2013.11.03 CategoryEtc Byhooni Views17519
    Read More
  8. 콘솔에서 패스워드 걸린 zip 압축하는 명령

    Date2018.03.02 CategorySystem/OS Byhooni Views4267
    Read More
  9. 컴파일러 수업 자료(교재 : 컴파일러 입문)

    Date2003.04.23 CategorySystem/OS Byhooni Views23439
    Read More
  10. 캘리포니아 운전면허 족보

    Date2017.06.12 CategoryDevelop Byhooni Views2826
    Read More
  11. 캘리포니아 운전면허 문제

    Date2017.07.22 CategoryEtc Byhooni Views3496
    Read More
  12. 최근 논문 자료 (2011/01/03, 만현형한테 보낸거..)

    Date2013.04.23 CategoryDevelop Byhooni Views10366
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 99 Next
/ 99