Найти в файле запись по дате и вывести ее - 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), и каждая строка представляет собой запись, которую необходимо проверить на наличие подстроки.

  1. Объявлены необходимые переменные:
    • data - указатель на файл, в котором будет производиться поиск;
    • buff - буфер для чтения данных из файла;
    • sub - подстрока, которую необходимо найти.
  2. Производится открытие файла data.txt для чтения с помощью функции fopen.
  3. С помощью функции scanf вводится подстрока, которую необходимо найти.
  4. В цикле while происходит чтение файла до конца. Функция feof возвращает значение 0, пока в файле есть данные для чтения.
  5. В каждой итерации цикла считывается одна строка из файла с помощью функции fscanf.
  6. С помощью функции strcmp сравниваются подстрока из файла (buff) и подстрока, которую необходимо найти (sub). Если подстроки равны, выводится сообщение String was found.
  7. После окончания чтения файла функция fclose закрывает файл.
  8. Возвращается значение 1, указывающее на успешный поиск подстроки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы