我正在尝试从文件中提取数字。我有限制,我只需要使用open()
,read()
和close()
。在C中使用regex.h匹配和计算字符串中的任何数字
我已成功读取数据并保存在缓冲区中。不,我需要将它与RE匹配。 我使用RE =^[0-9] *
这是我这
char buffer[1024] = { NULL };
int count = 0;
int fRead;
fRead = open("file.in", O_RDONLY);
read(fRead, buffer, sizeof(buffer));
printf("\nFile Opened %s, %lu", buffer, sizeof(buffer));
/* Compile regular expression */
regex_t re;
int reti = regcomp(&re, "^[1-9]*", 0);
if (reti) {
fprintf(stderr, "Could not compile regex\n");
exit(1);
}
/* Execute regular expression */
reti = regexec(&re, buffer, 0, NULL, 0);
if (!reti) {
printf("\nMatch: %d", reti);
} else if (reti == REG_NOMATCH) {
puts("No match");
} else {
char msgbuf[100];
regerror(reti, &re, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
exit(1);
}
close(fRead);
代码现在的问题是我想算和显示我在文件中找到的数字。 例如我的文件可能有文字some thing 2 to 3 makes 5
,在这种情况下我出去放必须 OUTPUT: 2,3,5 count = 3
我试过这个,但仍然是我的输出计数为0;为什么这样? 我已将此代码复制并粘贴到我的代码中。 也改变RE,现在RE是[1-9] –
其实它没有进入While循环由于这个 '匹配[pmatch_index] .rm_so!= -1'条件 –
嗯,测试它我也没有进入循环。它看起来像regexec标记完全匹配为0,0(如果你看看匹配[0],你可能会看到rm_so和rm_eo设置为0)。我会试着弄清楚我在这里做错了什么。 – seanmk