#include
#include
void charsort(char *cip[5]);
void main()
{
char *p[5]; //열이 다섯개인 포인터변수를 갖는 1차원 배열 선언
char temp[100];
char *ip;
for(int i = 0; i <5 ; i++){
printf("#문자열 %d : ", i+1);
gets(temp); //문자열 입력받기
ip = (char *)malloc(strlen(temp)+1); //문자열 길이 만큼 메모리크기 잡음
if(ip == NULL){
printf("메모리가 부족합니다.\n");
return;
} //동적메모리 할당공간이 없으면 수행되어지지않고 에러 메세지 출력 후 빠져나감
else{
p[i] = ip; //시작주소를 포인터변수에 선언
strcpy(p[i],temp); //문자열 복사
}
}
charsort(p); //정렬함수 호출
for(int j = 0; j <5 ; j++){
printf("%d. %s \n",j+1,p[j]); //strlen(p[j])를 찍어보면 이배열이 가변배열인지 확인할수 있다.
}
free(ip); //동적메모리 할당영역 해제
}
void charsort(char *cip[5]){
int res;
char *temp;
for(int i=0 ; i<5; i++){
for(int j=4 ; j>=i+1 ; j--){
res =strcmp(cip[i],cip[j]); //알파벳 순서 검사오름차순
if(res > 0)
{
temp = cip[i]; // 바꿀려는 문자열을 가리키는 포인터 변수를 임시공간에 복사 해두고
cip[i] = cip[j]; // 바꾸어질 문자열을 가리키던 포인터 변수로 그것을 가리키게 한다음
cip[j] = temp; // 임시공간에 복사한 포인터변수로 바꾸어질 문자열을 가리키게 한다.
}
}
}
}
댓글 없음:
댓글 쓰기