C语言通过关键字从文本中提取有效信息
来源:互联网 发布:音响频谱软件 编辑:程序博客网 时间:2024/05/22 12:00
/* 通过关键字,从文件中提取有用的信息 */
int FindInfoFromFile(char *keyword, char *FilePath, char *OutString){
char *pattern;
int x, z, lno = 0, cflags = 0;
char ebuf[128], lbuf[256];
FILE *fp = NULL;
regex_t reg;
regmatch_t pm[10];
const size_t nmatch = 10;
pattern = keyword;
fp = fopen(FilePath, "r" );
if(fp == NULL)
{
fprintf(stderr,"%s[%d]:Cannot open %s\n", __FILE__, __LINE__, FilePath);
return -1;
};
z = regcomp(®, pattern, cflags);
if (z != 0)
{
regerror(z, ®, ebuf, sizeof(ebuf));
fprintf(stderr, "%s: pattern '%s' \n", ebuf, pattern);
fclose(fp);
fp = NULL;
return -1;
}
/* 逐行处理输入的数据 */
while (fgets (lbuf, sizeof (lbuf), fp))
{
++lno;
if ((z = (int)strlen(lbuf)) > 0 && lbuf[z - 1] == '\n')
lbuf[z - 1] = 0;
/*对每一行应用正则表达式进行匹配 */
z = regexec (®, lbuf, nmatch, pm, 0);
if (z == REG_NOMATCH)//没有匹配成功,continue
{
continue;
}
else if (z != 0)
{
regerror (z,®, ebuf, sizeof (ebuf));
fprintf (stderr, "%s: regcom('%s')\n", ebuf, lbuf);
fclose(fp);
fp = NULL;
return -2;
}
/* 输出处理结果 */
for (x = 0; x < nmatch && pm[x].rm_so != -1; ++x)
{
if (!x)
strcat(OutString, lbuf);
strcat(OutString, "\n");
}
}
/* 释放正则表达式 */
fclose(fp);
fp = NULL;
regfree (®);
return 0;
}
0 0
- C语言通过关键字从文本中提取有效信息
- 从文本中提取特定信息
- 通过 JDBC 从数据库中提取信息
- 从字幕文件中提取有效对白信息
- 从MP3中提取歌曲信息(C#)
- 从MP3中提取歌曲信息(C#)
- 从MP3中提取歌曲信息(C#)
- 从MP3中提取歌曲信息(C#)
- C语言 从字符串中提取数字
- 趣味编程:从字符串中提取信息(C语言版本)
- 从图片中提取文本
- 7.NLTK之从文本提取信息
- 【C语言】从字符串中简单提取数值
- 从指定文本中提取图片
- 从 Android 程序中提取文本资源
- 从文本中提取所有的单词
- 从xml中提取所有的文本
- JAVA从html中提取纯文本
- Java中abstract class 和 interface 的解释和他们的异同点(转)
- 杰出程序员永远都不会说的几句话
- C++调用C#接口dll,对dll进行注册
- linux修改系统时间
- Android之shape与selector实现圆角
- C语言通过关键字从文本中提取有效信息
- 轻量级web server Tornado代码分析
- poj 2021 Relative Relatives 排序
- 位运算 加减乘除 负值判断
- 用Java Socket开发小型服务器,支持上千个并发
- 使用Tornado进行网络异步编程
- Android如何使用Fragment构建动态界面
- bison -y -o "src\thrifty.cc" –defines="src/thrifty.hh"
- RenderText and Chrome UI text drawing