Реализация счетчика переменного тока - PullRequest
0 голосов
/ 16 марта 2019

Я написал программу c для подсчета количества раз, когда слово «printf» встречается в определенном файле (здесь «document.c»). «document.c» имеет несколько строк кода. Я начал с цикла while, который перебирает все строки файла, а затем я читаю символы каждой строки внутри цикла for с помощью функции strstr.

Он ничего не печатает с моим текущим кодом. Более того, я думаю, что есть некоторые другие незначительные проблемы, потому что в старой версии он печатал, но не правильно, печатал число, намного большее, чем фактическое число «printf» в документе.

Я также новичок в c. Спасибо!

int counter() {
    FILE * filePointer;
    filePointer = fopen("document.c", "r");
    int counter = 0;
    char singleLine[200];

    while(!feof(filePointer)){
        fgets(singleLine, 200, filePointer);
        for (int i = 0; i < strlen(singleLine); i++){
            if(strstr(singleLine, "printf")){
                counter++;
            }
        }
    }
    fclose(filePointer);
    printf("%d",counter);
    return 0;
}

1 Ответ

1 голос
/ 16 марта 2019

Вы перебираете каждый символ в строке ввода, а затем спрашиваете, появляется ли строка "printf" где-нибудь в строке.Если строка содержит 5 символов, вы спросите это 5 раз;если он содержит 40 символов, вы спросите это 40 раз.

Предполагая, что вы пытаетесь охватить случай, когда «printf» может появляться более одного раза в строке, посмотрите, что strstr() возвращает значение и использует его для корректировки начальной позиции поиска во внутреннем цикле (который не должен повторяться по каждому символу, но должен циклически повторяться, пока обнаруживаются новые "совпадения").

(Примечание для избирателей: я отвечаю на вопрос, но не даю код, потому что не хочу делать за них домашнее задание.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...