소감 ¶
소스가  너무 지저분하다;;;
 너무 지저분하다;;;
 너무 지저분하다;;;
 너무 지저분하다;;;조만간 소스 살좀 빼야지;;
- 소스 다시 재정렬 해보았는데 뭐 그게그거같긴하다;; 그래도 뭔가 정리되긴한듯;
코딩 - 리팩토링 前 ¶
~cpp 
#include <stdio.h> 
#include <string.h>
#define TRUE 1
#define FALSE 0
int is_int(char c);
void intval(char* from);
int main(int argc, char* argv[])
{
	int i;
	char jumin[13];
	int chk;
	while(1)
	{
		chk=TRUE;
		printf("주민등록번호 13자리 입력하세요(하이픈 '-' 제외) : ");
		scanf("%s",jumin);
		
		//13자리인지
		if(strlen(jumin)!=13) chk=FALSE;
		//숫자로만 이어져 있는지
		for(i=0;i<13;i++)
		{
			if(!is_int(jumin[i]))
			{
				printf("숫자만 입력해야 합니다\n\n");
				chk=FALSE;
				break;
			}
		}
		//chk true이면 다음으로 넘어감
		if(chk) break;
	}
	intval(jumin);
	chk = 0;
	for(i=0;i<=7;i++)  chk += jumin[i] * (i+2);
	for(i=8;i<=11;i++) chk += jumin[i] * (i-6);
	chk = 11-chk%11;
	
	if(jumin[12]==chk) 
		printf("대한민국 국민이네요~ ^^ 안녕하세요!\n");
	else
		printf("혹시 간첩???? -_-;; \n");
	return 0;
}
int is_int(char c)
{
	int int_c;
	int_c=(int)c;
	
	//숫자 값인지
	if(int_c>=48 && int_c<=57) return TRUE;
	return FALSE;
}
void intval(char* from)
{
	int i;
	for(i=0;i<13;i++)
	{
		*(from) = (int)*(from++) - 48;
	}
}
코딩 - 리팩토링 後 ¶
~cpp 
#include <stdio.h> 
#include <string.h>
#define TRUE 1
#define FALSE 0
int is_int(char* c);
void intval(char* from);
void chk_jumin(char* jumin);
int chk_input(char *jumin);
int main(int argc, char* argv[])
{
	char jumin[13];
	int chk;
	while(1)
	{
		printf("주민등록번호 13자리 입력하세요(하이픈 '-' 제외) : ");
		scanf("%s",jumin);
		
		chk = chk_input(jumin); // 13자리인지, 숫자로만 구성되어있는지 체크 정상이면 TRUE
		if(chk) break;//TRUE이면 다음으로 넘어감
	}
	
	intval(jumin); //주민등록번호를 숫자로 변경
	chk_jumin(jumin); //주민등록번호 체크 
	
	return 0;
}
int is_int(char* c)
{
	int int_c, i, chk=TRUE;
	int_c=(int)*(c++);
	
	//숫자 값인지
	for(i=0;i<13;i++)
	{
		if(!(int_c>=48 && int_c<=57)) chk=FALSE;	
	}
	return chk;
}
void intval(char* from)
{
	int i;
	for(i=0;i<13;i++)
	{
		*(from) = (int)*(from++) - 48;
	}
}
void chk_jumin(char* jumin)
{
	int i, chk=0;
	for(i=0;i<=7;i++)  chk += *(jumin++) * (i+2);
	for(i=8;i<=11;i++) chk += *(jumin++) * (i-6);
	chk = 11-chk%11;
	if(*jumin==chk)
		printf("대한민국 국민이네요~ ^^ 안녕하세요!\n");
	else
		printf("혹시 간첩???? -_-;; \n");
}
int chk_input(char *jumin)
{
	int chk=TRUE;
	if(strlen(jumin)!=13) //13자리인지 체크
		chk=FALSE;
	else
		chk = is_int(jumin); //숫자로만 이어져 있는지 체크
	return chk;
}













