Вычисление частоты строки в файле на языке Си
while(fgets(temp1, 512, my_file) != NULL) { if((strstr(temp1, str)) != 0) { l++; printf(" match found on line: %d\n", sr_num); printf("\n%s \n", temp1); result++; } /*this is returning same result for strings like mc Larenc,mc Cody ,mc Larenc*/
Что я уже пробовал:
мне нужно проверить частоту строк и добавить частоту строк,таких как mc Larenc ,mc Cody,mc Larenc, mc Donell, просто проверяя первые два символа, а не всю строку
Richard MacCutchan
Каковы значения в temp1 и str?
Richard MacCutchan
Но что же это такое ценности в них? Как мы можем помочь вам, если вы не дадите нам полную информацию?
Richard MacCutchan
Ну, вы все еще не объяснили, с чем вы сравниваете. Каково (в четвертый раз) фактическое значение в str
переменная?
Richard MacCutchan
Ну, я только что попробовал это сделать, и он правильно возвращает количество совпадений как 1. Все, что вы делаете в своем коде, отличается от того, что вы думаете. Кроме того, вероятно, было бы более разумно использовать strcmp, а не strstr.
Richard MacCutchan
Боюсь, что это еще один неполный вопрос. Поговорка - это не сработало." это абсолютно ничего нам не говорит.
Пожалуйста, отредактируйте свой вопрос, удалите то, что там есть, и покажите фактический код, который вы используете. Также покажите фактические значения переменных, которые вы используете в сравнениях.
Кстати, даже если ваш код сравнивал только первые две буквы, "mc", в своих тестах, он все равно не должен получить счет 5, так как в ваших данных есть только 4 вхождения этой строки.
Richard MacCutchan
Смотрите мое решение ниже.
CPallini
Вы знаете, вы ПК не можете догадаться, что, например, Мак Коди это всего лишь одна струна. Вы должны обеспечить соблюдение этого правила (то есть вы должны написать код для этого).
Richard MacCutchan
Итак, покажите нам, что содержится в двух строках, которые вы пытаетесь сравнить. Мы не можем догадаться, как выглядят ваши данные.
Patrice T
Мы ничего не можем сделать с этим кодом, он не является полным. Показать код, который может компилироваться.
Показать пример ввода str и пример файла с фактическим и ожидаемым выходом.
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
jsc42
Если вас интересуют только первые два символа, то почему вы сравниваете целые строки? Не проще ли просто проверить первые 2 символа, если это все, что вам нужно, например if (temp1[0] == str[0] && temp1[1] == str[1]) printf("same\n"); else printf("different\n"); ?