c·c++/c 프로그래밍

한글 한글자씩 잘라내기

바로이순간 2012. 5. 31. 14:17

#include <stdio.h>

int main() {

    char anthem[]="동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세\

무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세"; 

    char list[100][4]={0,};

    int i, j, k, n, x;


    i=0;j=0;

    while(anthem[i]!=0) {

        if(anthem[i]<0) {

            list[j][0]=anthem[i++];list[j][1]=anthem[i++];++j;

        }

        else if(anthem[i]>0) i=i+1;

    }


    n=j;

    for(i=0;i<n;++i) printf("[%s]",list[i]);


    return 0;

}




입력된 글자들을 순서대로 정렬해 보았습니다.


#include <stdio.h>

#include <string.h>

int main() {

    char anthem[]="동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세\

무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세"; 

    char list[100][4]={0,};

    char temp[4];

    int i, j, k, n, x;


    i=0;j=0;

    while(anthem[i]!=0) {

// 한글의 한글자는 문자2개가 합쳐서 한개가 됩니다.

// char형으로(부호있는 문자)볼때 두글자가 모두 음수값을 가집니다.

// 그래서 음수라면 한글의 시작하는 바이트라는 것을 알게 됩니다.

// 두글자를 합쳐서 한글 한글자를 만들어 주게 됩니다.

// 4바이트는 널문자(문자열의 끝)를 포함하면 3바이트 이지만, 

// 4의 배수가 효과적이기 때문에 4바이트로 잡아준 것입니다.

        if(anthem[i]<0) {

            list[j][0]=anthem[i++];list[j][1]=anthem[i++];++j;

        }

        else if(anthem[i]>0) i=i+1;

    }


    n=j;

    for(i=0;i<n-1;++i) {

        k=i;

        for(j=i+1;j<n;++j) {

            if(strcmp(list[k],list[j])>0) k=j;

        }

        strcpy(temp,list[k]);

        strcpy(list[k],list[i]);

        strcpy(list[i],temp);

    }  

    for(i=0;i<n;++i) printf("[%s]",list[i]);


    return 0;

}

'c·c++ > c 프로그래밍' 카테고리의 다른 글

가위 바위 보  (0) 2012.06.02
영어 문자열 비교하기  (0) 2012.06.01
중복수 체크하기  (0) 2012.05.30
단어의 갯수 세기  (0) 2012.05.30
배너 옮기기  (0) 2012.05.30