Функция поиска для поиска нескольких слов одновременно, с функцией флага - PullRequest
0 голосов
/ 03 февраля 2019

Я создаю программу, чтобы найти конкретные слова (слова известны перед поиском) и распечатать их там, где нравится пользователю.Проблема заключается в функции поиска, которую я создал, поскольку она работает только для одного слова за раз, как я могу настроить ее так, чтобы она выполняла поиск нескольких слов одновременно, а также имела функцию флага.Кроме того, я не могу понять, каким должен быть код, если весь код (текст) написан в одной строке.

Это функция поиска и функция флага, я пытался найти файлсимвол за символом, проходите через функцию флага, в зависимости от того, что дает функция флага - (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 разных массивах..

...