Автор Тема: parsing na file s C  (Прочетена 2809 пъти)

panx

  • Новаци
  • *
  • Публикации: 1
    • Профил
parsing na file s C
« -: Jul 08, 2002, 16:49 »
Pravq optiti za programirane na C
Nalaga mi se parse na /proc/net/dev  - iskam da izvadq tekushtiq vhodqsht i izhodqsht traffic  i da go linkna kym nekva promenliva. Koq funkciq da polzvam
ot mnogoto *scan* . Shte se radvam i na nqkol-drug red kato primer:)
Thanx
Активен

  • Гост
parsing na file s C
« Отговор #1 -: Jul 09, 2002, 04:38 »
Нещо такова би трябвало да свърши работа:
Примерен код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>


int main() {
   FILE *fp;
#define buf_len      1024
#define ISBLANK(c)   (((c) == ' ') || ((c) == '\t'))
        char buf[buf_len];
   int line_num = 0;
        const char *stats_file = "/proc/net/dev";
        const char *interface = "ppp0";
   if(stats_file == NULL)
            return(-1);
        fp = fopen(stats_file, "rb");
        if(fp == NULL)
            return(-1);
   while(fgets(buf, buf_len, fp) != NULL)
   {
       if(line_num >= 2)
       {
      char cur_ifname[256];
      char *strptr;

      unsigned long   r_bytes, r_packets, r_errs, r_drop,
            r_fifo, r_frame, r_compressed, r_multicast,
            s_bytes, s_packets, s_errs, s_drop,
            s_fifo, s_colls, s_carrier, s_compressed;


      strptr = buf;
      while(ISBLANK(*strptr))
          strptr++;
      strncpy(cur_ifname, strptr, 256);
      cur_ifname[256 - 1] = '\0';
      strptr = strchr(cur_ifname, ':');
      if(strptr != NULL)
          (*strptr) = '\0';

      if(!strcmp(interface, cur_ifname))
      {

          strptr = strchr(buf, ':');
          if(strptr != NULL)
         strptr++;
          else
         strptr = buf;
          while(ISBLANK(*strptr))
         strptr++;

          sscanf(
         strptr,
"%lu %lu %lu %lu\
 %lu %lu %lu %lu\
 %lu %lu %lu %lu\
 %lu %lu %lu %lu",
         &r_bytes, &r_packets, &r_errs, &r_drop,
         &r_fifo, &r_frame, &r_compressed, &r_multicast,
         &s_bytes, &s_packets, &s_errs, &s_drop,
         &s_fifo, &s_colls, &s_carrier, &s_compressed
          );
printf("Recieved bytes: %ld\nSent bytes: %ld\n",r_bytes, s_bytes);          
break;
      }
       }

       line_num++;
   }

        fclose(fp);

#undef buf_len

}
Активен

  • Гост
parsing na file s C
« Отговор #2 -: Jul 09, 2002, 08:32 »
Bla, tva e poveche ot tova koeto ochakvah.
Blagodarq! '<img'>
Активен

  • Гост
parsing na file s C
« Отговор #3 -: Jul 09, 2002, 22:07 »
As se sblaskah sas podoben problem: Opitvam se da parsna html direktno ot url-a , no se sblaskah s dosta problemi sas socket - vraskata. Njakoi moze li da mi pomgne sas savet ili HOWTO-Adres???
Mersi '<img'>
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
kak da si redaktiram niakoj file
Настройка на програми
Lutskan 1 1292 Последна публикация Apr 25, 2003, 12:10
от kennedy
no such file, but the file is there
Хардуерни и софтуерни проблеми
the_real_maniac 6 3216 Последна публикация Aug 24, 2004, 17:27
от melwin
File-roller  2.10.4
Настройка на програми
Nik123 1 1548 Последна публикация Apr 22, 2006, 10:40
от PhobosK
Търся програма за ssh file tranfer
Настройка на програми
JaG_ 13 5145 Последна публикация Sep 04, 2008, 19:33
от JaG_
PHP files slow parsing
Web development
sas 0 1484 Последна публикация Jun 25, 2009, 15:27
от sas