(수정) 일의 자리의 "일"을 제외한 함수 (주석문 추가)
// 이제보니 Little AOI 페이지였네;;;;;;; 그냥 내주신 문제인줄 알았는데 =ㅁ=
~cpp
/*
성공시 const char * 리턴
실패시 -1 리턴
*/
#include <string.h>
const char *change(int num)
{
static char ret[30] = {0}; // static array for return;
char data[7][3] = {0}; // stack
int i; // for for - _ - kidding. kiki~
int buf;
int count=0; // 자릿수.
if(num >= 1000000) // 10만 자리를 넘으면 에러 return
return -1;
for(i=0; num>0; ++i){
buf = num % 10;
switch(buf){
case 0: strcpy(data[i], "영"); break;
case 1: strcpy(data[i], "일"); break;
case 2: strcpy(data[i], "이"); break;
case 3: strcpy(data[i], "삼"); break;
case 4: strcpy(data[i], "사"); break;
case 5: strcpy(data[i], "오"); break;
case 6: strcpy(data[i], "육"); break;
case 7: strcpy(data[i], "칠"); break;
case 8: strcpy(data[i], "팔"); break;
case 9: strcpy(data[i], "구"); break;
}
num /= 10;
++count;
}
for(--count; count>=0 ; --count){ // stack이니 끝에서부터 다시 꺼내줌.
// if(strcmp(data[count], "일") != 0) // 일의 자리를 제외한 각자리의 일을 빼준다.
strcat(ret, data[count]);
// if(i == 0 && strcmp(data[count], "일") == 0) strcat(ret, data[count]); // 일의 자리는 따로.
switch(count){ // 단위 붙임.
case 0: strcat(ret, ""); break;
case 1: strcat(ret, "십"); break;
case 2: strcat(ret, "백"); break;
case 3: strcat(ret, "천"); break;
case 4: strcat(ret, "만"); break;
case 5: strcat(ret, "십만"); break;
}
}
return ret;
}
머리 쓰기 정말 귀찮아서 생각을 전혀 안하고 손가는 대로 짰음...
생각을 안하니 이렇게 더러운 코드가 만들어지는 구나 생각했음.
아무튼 이 소스를 한달뒤에 수정하려면 생각을 많이 해야됨.
C언어의 장점인 효율적 함수 구성까지 떨어짐.
재사용은 가능하지만 수정 불가능 코드로 스스로 선언하겠음. 키키.
소스 수정할바에 새로 짠다.