#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;
}