Найти в файле запись по дате и вывести ее - 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, указывающее на успешный поиск подстроки.