Contents

Develop
2015.11.10 15:49

[c] 한글 문자열 출력

조회 수 1685 댓글 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 Views18419
    Read More
  2. 플라스터(Plaster) 수업 내용

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

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

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

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

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

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

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

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

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

    Date2017.07.22 CategoryEtc Byhooni Views985
    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 ... 98 Next
/ 98