У меня есть файл .txt, содержащий данные в этом формате:
AxCs: 0,9467,
FyHd: 0,9489,
AzCf: 0,78973,
DhBh: 0,8874,
JyLt: 0,64351,
AxCb: 0,8743,
и т. Д. *
У меня есть программа C, которая получает в качестве входных данных подстроку (e.g "Ax")
и возвращает все строки, содержащие эту подстроку (e.g "AxCs: 0.9467", "AxCb: 0.8743")
и среднее их числовых значений.
Более точно: Программа получает (от терминала) 3 параметра:
-
programname.exe
filetoread.txt
substring
И выводит:
- Переданная подстрока
- Количество строк, соответствующих подстроке
- Среднее из всех числовых значений совпавших строк
В программе я хочу изменить следующее: Когда я передаю два символа, я хочу получить совпадение, если первый и третий символы каждой строки в .txt совпадают с переданными. (например, если я передаю "AC"
, AxCs: 0.9467
и AxCb: 0.8743
должны совпадать).
Это код:
#include <stdio.h>
#include <string.h>
#define MAXC 1024
int main (int argc, char **argv) {
char buf[MAXC] = "", *str = NULL; /* buffer for line and ptr to search str */
size_t n = 0, len = 0; /* counter and search string length */
double sum = 0; /* sum of matching lines */
FILE *fp = NULL; /* file pointer */
char tmpstr[8];
if (argc < 3) { /* validate 2 arguments given - filename, search_string */
fprintf (stderr, "error: insufficient number of arguments\n"
"usage: %s filename search_string\n", argv[0]);
return 1;
}
if (!(fp = fopen (argv[1], "r"))) { /* open/validate file open for reading */
perror ("fopen-filename");
return 1;
}
str = argv[2]; /* set pointer to search string */
len = strlen (str); /* get length of search string */
prefix2char = argv[2];
len = strlen(prefix2char);
while (fgets (buf, MAXC, fp)) { /* read each line into buf */
memcpy(tmpstr, buf, 4);
tmpstr[4] = 0;
if (strstr(tmpstr, prefix2char)) { /* HERE IS THE PROBLEM: I should check the first and the third char */
double tmp;
if (sscanf (buf, "%*1023[^:]: %lf", &tmp) == 1) {
sum += tmp;
n++;
}
}
}
if (n) /* if values found, output average */
printf ("prefix '%s' avg: %.4f\n", str, sum / n);
else /* output not found */
printf ("prefix '%s' -- not found in file.\n", str);
}
Кто-нибудь может мне помочь?