Я создаю программу, чтобы найти конкретные слова (слова известны перед поиском) и распечатать их там, где нравится пользователю.Проблема заключается в функции поиска, которую я создал, поскольку она работает только для одного слова за раз, как я могу настроить ее так, чтобы она выполняла поиск нескольких слов одновременно, а также имела функцию флага.Кроме того, я не могу понять, каким должен быть код, если весь код (текст) написан в одной строке.
Это функция поиска и функция флага, я пытался найти файлсимвол за символом, проходите через функцию флага, в зависимости от того, что дает функция флага - (0 или 1) Я либо читаю строку, либо нет, тогда, если есть совпадение, сохраненное в переменной.
// Search function//
int count_symbol(FILE *fp_in, char *word) {
char str[BUFFER_SIZE];
char *pos;
int index, count;
count = 0;
// Read line from file till end of file.
while ((fgets(str, BUFFER_SIZE, fp_in)) != NULL) {
index = 0;
void flag_function();
if (flag_function == 0) {//if the line is safe to read.
// Find next occurrence of word in str
while ((pos = strstr(str + index, word)) != NULL) {
// Index of word in str is
// Memory address of pos - memory
// address of str.
index = (pos - str) + 1;
count++;
}
}
}
return count;
}
// Flag function //
void flag_function() {
int tplay[24];
int temp;
int i;
int j;
int flag = 0;
int flag1 = 0;
int br = 0;
char ch;
char pch = 0;
FILE *fr=NULL;
if (!(fr = fopen("text.txt","rt"))) {
printf("Error");
getch();
return 1;
}
while ((ch = fgetc(fr)) != EOF) {
if (flag || flag1) {
if(flag) {
if (ch=='\n') {
flag=0;
} else {
if (ch != '"') {
br++;
}
}
}
}
if (flag1) {
if ((ch == '"') && (pch != '\\')) {
flag1 = 0;
}
}
else {
if (!flag) {
if ((ch == '/') && (pch != '/')) {
flag=1;
}
}
if (!flag1) {
if (ch == '"') {
flag1=1;
}
}
}
pch = ch;
}
printf("%d//\n",br);
getch();
fclose(fr);
return 0;
}
Я ожидаю, что смогу прочитать все эти 4 слова и сосчитать их количество за один раз, а не вызывать функцию 4 раза, возможно, их придется хранить в 4 разных массивах..