und [Linux] Allgemeines Problem

  • C++

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • und [Linux] Allgemeines Problem

    Hallo,

    Also ich programmier mir gerade selber ein Prog zum Ansteuern meines LCD.

    Jetzt hab ich aber ein Prob mit dem Rausfinden, des Eth0 Verkehrs...

    Meine Funktion bisher:

    Quellcode

    1. string display::hole_netzwerk(void)
    2. {
    3. string text="";
    4. FILE *ziel,*ziel2;
    5. int up1=0,up2=0,down1=0,down2=0;
    6. char temp[80],temp2[20];
    7. ziel=popen("grep -e \"eth0\" /proc/net/dev","r");
    8. sleep(1);
    9. ziel2=popen("grep -e \"eth0\" /proc/net/dev","r");
    10. fgets(temp,80,ziel);
    11. for(int i=8;temp[i]!=0x20;i++)
    12. {
    13. temp2[i-8]=temp[i];
    14. }
    15. down1=atoi(temp2);
    16. /* Hier up bytes holen und in up1 speichern*/
    17. fgets(temp,80,ziel2);
    18. for(int i=8;temp[i]!=0x20;i++)
    19. {
    20. temp2[i-8]=temp[i];
    21. }
    22. down2=atoi(temp2);
    23. /* Hier up bytes holen und in up2 speichern*/
    24. printf("%i %i",down2-down1,up2-up1);
    25. text=my_itoa((down2-down1)/1024,10)+"/"+my_itoa((up2-up1)/1024,10);
    26. pclose(ziel);
    27. pclose(ziel2);
    28. return text;
    29. }
    Alles anzeigen


    das char array (var. temp) sieht so aus:

    Quellcode

    1. eth0:4159959454 16876412 982 1293 434 0 0 0 1608975274 16826752 0 0 0 0 0 0


    Wie komm ich jetzt an die Zahl 1608975274 ran, die Anzal an Stellen und Leerzeichen vorher ist ja variabel..

    Oder geht das vlt. auch ganz anders....
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • Also von dem was du da machst hab ich weniger Ahnung aber du kannst das vllt. mit "Regulären Ausdrücken" (regex/regular expressions).

    Du weis ja das die Zahl nach dem 1. Leerzeichen steht und durch das 2. Leerzeichen begrenzt wird.

    Bin mir nicht sicher ob C++ das unterstütz, denke aber schon.

    Hier wäre der RegEx:

    Quellcode

    1. \\s[0-9]*\s\


    Das würde dir den String rausfiltern der nur aus Zahlen besteht und am Anfang und am Ende durch ein Whitespacezeichen begrenzt wird.

    mfg
    Tischler