已知有结构体struct birth { int year, month, day; };和struct person {char ID[19] , name[20]; struct birth birthday; int flag; };,在此条件下给出从身份证号中提取出生年、月、日的函数。其参数 ID 代表一个身份证号,返回对应的birth结构体。
时间: 2024-03-24 15:40:52 浏览: 71
深入了解C++ 结构体(struct)与共用体(union)
可以使用以下代码从身份证号中提取出生年、月、日:
```c++
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
struct birth { int year, month, day; };
struct person {char ID[19] , name[20]; struct birth birthday; int flag; };
struct birth get_birthday_from_ID(char *ID) {
struct birth birthday;
char year_str[5], month_str[3], day_str[3];
memset(&birthday, 0, sizeof(struct birth));
memset(year_str, 0, sizeof(year_str));
memset(month_str, 0, sizeof(month_str));
memset(day_str, 0, sizeof(day_str));
strncpy(year_str, ID+6, 4);
strncpy(month_str, ID+10, 2);
strncpy(day_str, ID+12, 2);
birthday.year = atoi(year_str);
birthday.month = atoi(month_str);
birthday.day = atoi(day_str);
return birthday;
}
int main() {
struct person p;
strcpy(p.ID, "123456197001010101");
p.birthday = get_birthday_from_ID(p.ID);
printf("birthday: %d-%d-%d\n", p.birthday.year, p.birthday.month, p.birthday.day);
return 0;
}
```
函数get_birthday_from_ID接受一个身份证号指针ID,返回一个birth结构体。在函数内部,首先定义了一个birthday结构体,并初始化为全零。然后使用strncpy函数从身份证号中提取出生年、月、日的字符串,使用atoi函数将字符串转化为整型,最后将结果填入birthday结构体中并返回。
阅读全文