Поиск слова в текстовом файле - C (СИ) (148198)
Формулировка задачи:
Почему программа вылетает ? Когда пробую на линуксе, там вообще дамп памяти. Необходимо найти слово в файле, и вывести их количество, сколько раз это слово повторялось.
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char *argv[]){ FILE *mf; char str[100]; char *estr; char *istr; //char *istr1; char strArray[100]; char buf = "hello"; int count; mf=fopen ("C:/Users/User1/Desktop/1.txt","r"); char sep [10]=" "; estr = fgets (str,sizeof(str),mf); if (estr == NULL){ if ( feof (mf) != 0){ } else{ printf("\nError read file\n"); } } fclose(mf); istr = strtok (str,sep); int i=0; int cnt = sizeof(strArray)/sizeof(char); printf("%d\n", cnt); while (istr != NULL) { istr = strtok (NULL,sep); printf("%s\t", istr); if (strcmp(istr, buf)==0) { count++; } return 0; }
Решение задачи: «Поиск слова в текстовом файле»
textual
Листинг программы
//gcc 5.4.0 #include <stdio.h> #include <string.h> #include <stdlib.h> #define DELIM " " #define WORD "hello" int main(void) { char buf[BUFSIZ]; FILE *f = fopen ("C:/Users/User1/Desktop/1.txt","r"); if ( !f ) { fprintf(stderr, "Error open file\n"); return 1; } if ( !fgets(buf, BUFSIZ, f) ) { fprintf(stderr, "Error read file\n"); return 1; } fclose(f); size_t count = 0; for (char *ptr=strtok(buf, DELIM); ptr; ptr=strtok(NULL, DELIM)) if (!strcmp(ptr, WORD)) ++count; printf("Count %s: %zu\n", WORD, count); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и строками
- Определяем разделитель (DELIM) и искомое слово (WORD)
- Открываем файл на чтение (fopen), проверяем на ошибку (если файл не открылся, выводим сообщение и возвращаем 1)
- Читаем файл (fgets), проверяем на ошибку (если не удалось прочитать, выводим сообщение и возвращаем 1)
- Закрываем файл (fclose)
- Инициализируем переменную count для подсчета найденных вхождений слова
- Разбиваем строку на слова (strtok), сравниваем каждое слово с искомым словом (strcmp), если слова совпадают, увеличиваем счетчик count на 1
- Выводим количество найденных вхождений слова
- Возвращаем 0, если все прошло успешно
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д