Найти в файле запись по дате и вывести ее - C (СИ)
Формулировка задачи:
Помогите разобраться с поиском записи в файле. В общем в файле сожержатся записи формата:
Event - str , Date - str1
Event - str_1, Date - str1_1
......
Нужно найти запись по дате и вывести ее, ну или хотя бы число точных вхождений строки в файл.
int search_by_date(){ FILE *data; char buff[355]; char sub[255]; int k = 0; data = fopen("data.txt","r"); printf("Substring: "); scanf("%s",sub); while(!feof(data)) { fscanf(data,"%s",&buff); } if(strcmp(buff,sub)) printf("String was found"); fclose(data); return 1; }
подскажите что не так с поиском
Решение задачи: «Найти в файле запись по дате и вывести ее»
textual
Листинг программы
int search_by_date(){ FILE *data; char buff[355]; char sub[255]; int k = 0; data = fopen("data.txt","r"); printf("Substring: "); scanf("%s",sub); while(!feof(data)) { fscanf(data,"%s",&buff); /* Добавляем отрицание Return Value Returns an integral value indicating the relationship between the strings: A zero value indicates that both strings are equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite. */ if(!strcmp(buff,sub)) printf("String was found"); //Думаю if должен быть в цикле) ,поэтому скобка за 2иклом должна быть } fclose(data); return 1; }
Объяснение кода листинга программы
В данном коде реализован поиск подстроки в файле. Предполагается, что файл data.txt
содержит строки, разделенные символом новой строки (\n), и каждая строка представляет собой запись, которую необходимо проверить на наличие подстроки.
- Объявлены необходимые переменные:
- data - указатель на файл, в котором будет производиться поиск;
- buff - буфер для чтения данных из файла;
- sub - подстрока, которую необходимо найти.
- Производится открытие файла
data.txt
для чтения с помощью функции fopen. - С помощью функции scanf вводится подстрока, которую необходимо найти.
- В цикле while происходит чтение файла до конца. Функция feof возвращает значение 0, пока в файле есть данные для чтения.
- В каждой итерации цикла считывается одна строка из файла с помощью функции fscanf.
- С помощью функции strcmp сравниваются подстрока из файла (buff) и подстрока, которую необходимо найти (sub). Если подстроки равны, выводится сообщение
String was found
. - После окончания чтения файла функция fclose закрывает файл.
- Возвращается значение 1, указывающее на успешный поиск подстроки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д