用c语言从文件idcard.txt中读入若干个人的姓名和身份证号码,提取每个人的生日信息,将每个人的姓名和生日信息写入文件birthday.txt中。
时间: 2024-03-15 22:42:09 浏览: 15
好的,下面是一个使用C语言实现这个任务的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <regex.h>
#define MAX_LINE 1000
int main()
{
FILE *fp_in, *fp_out;
char line[MAX_LINE];
regex_t reg;
regmatch_t match[1];
char *pattern = "\\d{4}\\d{2}\\d{2}";
char *file_in = "idcard.txt";
char *file_out = "birthday.txt";
// 编译正则表达式
if (regcomp(®, pattern, REG_EXTENDED) != 0) {
fprintf(stderr, "Could not compile regex\n");
return 1;
}
// 打开输入文件
if ((fp_in = fopen(file_in, "r")) == NULL) {
fprintf(stderr, "Could not open input file\n");
return 1;
}
// 打开输出文件
if ((fp_out = fopen(file_out, "w")) == NULL) {
fprintf(stderr, "Could not open output file\n");
return 1;
}
// 逐行读取输入文件
while (fgets(line, MAX_LINE, fp_in) != NULL) {
// 在每行中查找生日信息
if (regexec(®, line, 1, match, 0) == 0) {
// 提取姓名和生日信息
char name[MAX_LINE];
strncpy(name, line, match[0].rm_so);
name[match[0].rm_so] = '\0';
char birthday[MAX_LINE];
strncpy(birthday, line + match[0].rm_so, match[0].rm_eo - match[0].rm_so);
birthday[match[0].rm_eo - match[0].rm_so] = '\0';
// 写入输出文件
fprintf(fp_out, "%s %s\n", name, birthday);
}
}
// 关闭文件和正则表达式
fclose(fp_in);
fclose(fp_out);
regfree(®);
return 0;
}
```
这个程序使用了POSIX标准的正则表达式库来匹配生日信息,可以处理一些复杂的情况。不过需要注意的是,正则表达式的用法可能和其他语言有所不同,需要多加测试和调试。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)