Добрый день всем.
У меня есть файл, содержащий данные, часть которых показана ниже. Он содержит записи каждые 3 секунды в течение 30 дней. Я хочу выполнить следующие данные:
2010-03-03 16:00:31; 66.89; 24.0; 14.89; 0.08;
2010-03-03 16:00:35; 66.15; 24.1; 14.85; 0.08;
2010-03-03 16:00:38; 67.10; 24.2; 14.81; 0.08;
2010-03-03 16:00:42; 66.36; 24.3; 14.78; 0.08;
2010-03-03 16:00:46; 65.83; 24.4; 14.75; 0.09;
.
.
.
2010-03-03 17:00:31; 62.78; 25.2; 13.96; 0.12;
2010-03-03 17:00:35; 63.94; 25.3; 13.92; 0.11;
2010-03-03 17:00:39; 61.94; 25.3; 13.89; 0.11;
2010-03-03 17:00:43; 60.99; 25.4; 13.88; 0.12;
2010-03-03 17:00:46; 62.67; 25.4; 13.89; 0.13;
2010-03-03 17:00:50; 62.57; 25.3; 13.91; 0.13;
2010-03-03 17:00:54; 61.51; 25.3; 13.91; 0.14;
.
.
.
2010-03-03 18:00:29; 66.04; 20.7; 13.63; 0.56;
2010-03-03 18:00:33; 66.04; 20.7; 13.63; 0.56;
2010-03-03 18:00:37; 65.52; 20.7; 13.59; 0.56;
2010-03-03 18:00:40; 64.46; 20.7; 13.56; 0.56;
2010-03-03 18:00:44; 64.88; 20.8; 13.56; 0.56;
.
.
.
- Читать все строки в файле, начиная с первой строки.
2. Для каждого часа я хочу вычислить сумму данных только во втором столбце и количество записей, которые привели к этой сумме.
3. Затем распечатайте в файл следующую информацию:
i.Date;sum(1st hour),number of records that gave rise to this sum;sum(2nd hour),num_records;sum(3rd hour),num_records;...; sum total(24 hours),totol_records;mean
Это пример того, что я хочу напечатать в файл, как описано выше;
03\03\2010; 15093.47; 379; 16025.46; 380; 14800.58; 379; 14605.34; 380; 21754.27,379;...;82279.12,1897;43,37
04\03\2010; 6842.051; 379; 7137.491; 380; 7215.16; 380; 7159.189; 379; 6594.672; 380;...;34948.56,1898;18,41
05\03\2010; 9938.37; 379; 9670.438; 380; 8232.032; 380; 9198.899; 379; 7083.687; 380;...;44123.426,1898;23,25
Я начал с этим кодом
int file_readline(char *file_in,char *outfile,char *strline) {
FILE *fd=NULL;
FILE *fo= NULL
char *date, *tmp,*time;
double sum=0;
double mean = 0;
strline=calloc(MAX_BUFFER_SIZE,sizeof(strline));
if (strline==NULL) {
printf ("Error calloc strline.................");
exit(EXIT_FAILURE);
}
file_in = calloc((strlen(strline)+strlen(file_in)),sizeof(file_in));
if (file_in==NULL)
{
printf ("Error calloc strline.................");
exit(EXIT_FAILURE);
}
fd=fopen(file_in,"r");
int i = 0;
int j = 0;
while ((fgets (strline, BUFSIZ, fd))>0 && !feof(fd)){
date = strtok(strline, " ");
time=strtok(NULL, " ");
tmp = strtok(NULL, ";");
if (i == 3) { // get only the 3rd value
sum += strtod(tmp, NULL);
++i;
// don't know how to proceed from here