Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
  1. get_jumin_info
  2. 주민등록번호에서 정보를 파싱하는 간단한 예제입니다.
  3. [멍]
  4. Version 0.1
  5. 2004/01/28

설명

1900년대에 태어난 사람들에 대한 주민정보를 가져오는 예제입니다.

그러나 2000년도 이상 태어난 사람은 나이 계산하는 코드에서 에러를 발생시킬수 있습니다.

이 부분에 대한 처리를 어떻게 하고 있는지 궁금하네요

아시는 분은 코드를 버전업해주세요 ^^;

사용방법

get_jumin_info.c

사용법: ./get_jumin_info 741121-1XXXXXX

#include <stdio.h>
#include <string.h>
#include <time.h>

int main(int argc, char **argv)
{
	char sex;
	char birth[10];
	int age;

	if (argc != 2)
	{
		printf("Usage: get_jumin_info <주민번호>\n");
		printf("\t예) 741121-1XXXXXX\n");
		return 1;
	}

	get_jumin_info(argv[1], &sex, &age, birth);

	printf("주민번호 = %s\n", argv[1]);
	switch (sex)
	{
		case '1':
			printf("성별: 남자\n");
			break;
		case '2':
			printf("성별: 여자\n");
			break;
	}
	printf("생년월일 = %s\n", birth);
	printf("나이 = %d\n", age);

	return 0;
}

코드

void get_jumin_info(char *jumin, char *sex, int *age, char *birth)
{
	time_t t;
	struct tm *tptr;
	char birthday[5];

	*sex = jumin[7];
	memcpy(birth, jumin, 6);
	birth[6] = '\0';
	sprintf(birthday, "19%c%c", jumin[0], jumin[1]);
	t = time(NULL);
	tptr = localtime(&t);  
	*age = 1900 + tptr->tm_year - atoi(birthday); // 2000년도 이상 태어난 사람은 나이 계산이 틀리게 나옴!!
}

변경사항

2004/01/28