struct birth get_birth(char *ID); (7分) 从身份证号中提取出生年、月、日的函数。其参数 ID 代表一个身份证号,返回对应的birth结构体。
时间: 2024-02-11 12:04:28 浏览: 63
好的,以下是一个可能的实现方式:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int year;
int month;
int day;
} birth;
int get_year(char *ID) {
char year_str[5];
strncpy(year_str, ID+6, 4);
year_str[4] = '\0';
return atoi(year_str);
}
int get_month(char *ID) {
char month_str[3];
strncpy(month_str, ID+10, 2);
month_str[2] = '\0';
return atoi(month_str);
}
int get_day(char *ID) {
char day_str[3];
strncpy(day_str, ID+12, 2);
day_str[2] = '\0';
return atoi(day_str);
}
birth get_birth(char *ID) {
birth b;
b.year = get_year(ID);
b.month = get_month(ID);
b.day = get_day(ID);
return b;
}
int main() {
char ID[] = "110101199003074114";
birth b = get_birth(ID);
printf("%d-%d-%d\n", b.year, b.month, b.day);
return 0;
}
```
该函数首先定义了一个 `birth` 结构体,包含了出生年、月、日三个成员变量。然后,定义了三个辅助函数 `get_year`、`get_month`、`get_day`,分别用于从身份证号中提取出生年、月、日。这些函数的实现方式都比较类似,使用了 `strncpy` 函数从字符串中截取出指定长度的子串,并使用 `atoi` 函数将其转换成整数。
最后,`get_birth` 函数使用上述三个辅助函数获取出生年、月、日,并将它们填入 `birth` 结构体中,然后返回该结构体。
在 `main` 函数中,我们调用 `get_birth` 函数获取出生日期,并将其打印输出。
阅读全文