Написать программу анализирующую лог файл сервера apach - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать программу анализирующую лог файл сервера apach, рассчитывающую увеличение нагрузки на сервере по дням года. В результате нужно вывести на экран значения массива из 365 элементов, в каждом элементе которого записано значение соответствующее определенному дню.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
 
int DayYear(char *mon, int day)
{
int dayMon2011[12]={31,29,31,30,31,30,31,31,30,31,30,31};
char month[12][4]={"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
int nn=0;
int n=-1;
do
   n++;
while((strcmp(month[n],mon)!=0)&&(n<11));
 for(int i=0;i<n;i++)
   nn=nn+dayMon2011[i];
 
 return nn+day;
}
 
int main()
{
FILE *f;
char s[50], ss[1000], date[12], *p;
char day[4], mon[4], year[5];
char  year1[5];
int day2;
int i, masD[365];
 
f=fopen("access_log","r");
  printf("wwedite interesujuwij god: ");
  scanf("%s",year1);
  for(i=0;i<365;i++)
    masD[i]=0;
  do{
     fgets(s, 50, f);
     fgets(ss, 1000, f);
 
     p=strchr(s, '[');
     if(p)
     {
        strncpy(date, p+1, 11); date[11]='\0';
        strncpy(day, date, 2); day[2]='\0'; day2=atoi(day);
        strncpy(mon, date+3, 3); mon[3]='\0';
        strncpy(year, p+8, 4); year[4]='\0';
        if(strcmp(year1,year)==0)
           masD[ DayYear(mon,day2)]++;
      }
  }
  while(!feof(f));
  for(i=0;i<365;i++)
    printf("%d: %d\n", i+1, masD[i]);
fclose(f);
getch();
   return 0;
}
вот рабочий код, напишите пожалуйста комментарий построчно, заранее спасибо!

Решение задачи: «Написать программу анализирующую лог файл сервера apach»

textual
Листинг программы
char month[12][4]={"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

Объяснение кода листинга программы

  1. Объявлен массив month типа char с размером 12 элементов, каждый из которых является строкой (массивом символов) размером 4 символа.
  2. Каждый элемент массива month содержит название месяца в виде строки.
  3. Значения переменных в массиве month соответствуют названиям месяцев от января до декабря.

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


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

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

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