请用C语言实现:要求把文件id.txt中若干个人的姓名和身份证号码显示在屏幕上。然后,将其生日信息提取出来存放到一字符串中,并将所提取的姓名和生日信息写入另一个文件bd.txt。要求运行结果如下所示:某某 ****年**月**日
时间: 2023-11-14 16:59:25 浏览: 82
以下是实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_ID_LENGTH 20
#define MAX_BIRTH_LENGTH 20
int main() {
FILE *fp_in, *fp_out;
char filename_in[] = "id.txt";
char filename_out[] = "bd.txt";
char line[MAX_NAME_LENGTH + MAX_ID_LENGTH + 2];
char name[MAX_NAME_LENGTH];
char id[MAX_ID_LENGTH];
char birth[MAX_BIRTH_LENGTH];
int year, month, day;
// 打开输入文件
fp_in = fopen(filename_in, "r");
if (fp_in == NULL) {
printf("Error: Cannot open file %s\n", filename_in);
exit(1);
}
// 打开输出文件
fp_out = fopen(filename_out, "w");
if (fp_out == NULL) {
printf("Error: Cannot open file %s\n", filename_out);
exit(1);
}
// 逐行读取输入文件
while (fgets(line, MAX_NAME_LENGTH + MAX_ID_LENGTH + 2, fp_in) != NULL) {
// 提取姓名和身份证号
sscanf(line, "%s %s", name, id);
// 提取生日信息
strncpy(birth, id + 6, 8);
birth[8] = '\0';
// 提取年月日
sscanf(birth, "%4d%2d%2d", &year, &month, &day);
// 输出姓名和生日信息
printf("%s %04d年%02d月%02d日\n", name, year, month, day);
// 写入姓名和生日信息到输出文件
fprintf(fp_out, "%s %04d年%02d月%02d日\n", name, year, month, day);
}
// 关闭文件
fclose(fp_in);
fclose(fp_out);
return 0;
}
```
假设id.txt文件内容如下:
```
张三 110101199001012345
李四 120202198512121234
王五 130303199807071234
```
则运行程序后,屏幕输出如下:
```
张三 1990年01月01日
李四 1985年12月12日
王五 1998年07月07日
```
并且bd.txt文件内容如下:
```
张三 1990年01月01日
李四 1985年12月12日
王五 1998年07月07日
```