728x90
/*
임의의 문자를 알파벳 순으로 정렬하는 프로그램이다.
문자를 입력받는 것이 아니라 선언하였다.
또한 strcmp로 문자열을 비교하여 정렬하였다.
*/
#include
#include
void sort(char *p[], int n);
void main(void)
{
int i=1, n;
char str[] = "김영이, 이성호, 강인석, 황성현";
char delim[] = " \t\r\n,:\"'!~@#$%^&*()-_=+\\|<>.?/[]{};";
char *p[6];
p[0] = strtok(str, delim);
//str배열을 delim배열을 기준으로 자른다.
printf("%s\n",p[0]);
while((p[i]=strtok(NULL, delim))!=NULL) {
//문장이 끝날 때까지 각각의 자른 값을 p배열값에 저장.
printf("%s\n",p[i]);
i++;
}
n = i; //문자열의 전체 길이의 값을 n에 넣는다.
sort(p, n); //문자를 알파벳 순으로 정렬.
for (i=0; i < n; i++) {
//각 문자를 sort해서 출력한다.
printf("%s ", p[i]);
}
printf("\n");
}
void sort(char *p[], int num) {
int i,j,k;
char *temp;
for (i=0; i < num-1; i++) {
k=i;
temp = p[i];
for (j=i+1; j < num; j++) {
if (strcmp(temp, p[j]) > 0 ) {
//두 문자를 비교해서 순서가 앞인 것을 p배열에 넣는다..
k = j;
temp = p[j];
}
}
p[k] = p[i];
p[i] = temp;
}
}
728x90