我正在嘗試從文件中提取數字。我有限制,我只需要使用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