Addieren der einträge
-
Hallo und zwar hab ich folgendes Problem, ich habe hier diverse log-Files die tägliche Sicherungen machen, wie kann ich die Größe der täglichen Sicherungen summieren und mir nur das gesamtergebniss in einer txt datei ausgeben lassen, bisher gibt mir mein Programm alle tägl. Einträge einzeln aus. Die MB zahl in der Klammer sollte summiert werden, die nimmt er auch einwandfrei, nur eben das aufsummierte ausgeben ist mein Problem. Hoff meine erklärung ist nicht zu verwirrend*g*
Wär sehr dankbar für eure hilfe, danke.
Hab einen kurzen Ausschnitt eines log files angehängt, dann seht ihr was ich meine, danke.Starting BFS "5889123f3fc381" on 17-AUG-2003 21:04:21 (5000.008 MB)
"E:..." for 5000.008 MB
Finished BFS "5889123f3fc381" (931 secs, 5.371 MB/s) on 17-AUG-2003 21:19:52Starting BFS "5889143f3fc381" on 17-AUG-2003 21:19:52 (650.008 MB)
"E:\..." for 650.008 MB
Finished BFS "5889143f3fc381" (100 secs, 6.500 MB/s) on 17-AUG-2003 21:21:32Starting BFS "5940563f48fe13" on 24-AUG-2003 20:04:07 (80.648 MB)
"E:\..." for 80.648 MB
Finished BFS "5940563f48fe13" (312 secs, 0.258 MB/s) on 24-AUG-2003 20:09:19Starting BFS "5940573f48fe13" on 24-AUG-2003 20:09:19 (7000.008 MB)
"E:\..." for 7000.008 MB
Finished BFS "5940573f48fe13" (2602 secs, 2.690 MB/s) on 24-AUG-2003 20:52:41Mein bisheriger code schaut so aus, wäre sehr über ein Bsp. oder einen verbesserungsvorschlag dankbar.
WIN32_FIND_DATA FileData; // Data structure describes the file found HANDLE hSearch; // Search handel retourned by FindFirstFile hSearch = FindFirstFile (TEXT("K:\\...\\*.log"), &FileData); if (hSearch == INVALID_HANDLE_VALUE) { printf ("\n No .log files found."); return 0; } while (FindNextFile (hSearch, &FileData)) { strcpy(filename, pfad); strcat(filename, FileData.cFileName); if ((ifp = fopen (filename, "r")) == NULL) { printf( "File %s not found\n", filename); exit(1); } printf (" File %s\n", filename); ofp = fopen("output.txt","w+"); fprintf(ofp, "Server, Date, MB, Sum\n"); while (fgets(readbuffer, 100, ifp ) != NULL) { c = strstr(readbuffer, "Node Name: "); if (c != NULL) { strncpy(&name[0], c +13, 9); name[8] = '\0'; } c = strstr(readbuffer, "Starting BFS"); if (c != NULL) { c = strstr(readbuffer, " on "); if (c != NULL) { strncpy(&date[0], c +4, 11); date[11] = '\0'; c1 = strstr(readbuffer, "("); c2 = strstr(readbuffer, "MB"); len = c2- c1 -2; strncpy(size, c1 +1, len); size[len] = '\0'; fprintf(ofp,"%s,%s,%s\n",name,date,size);
Thx for all, Marc
-
ich würd das ganze einfach so machen
tmp = (strchr(readbuffer, '(') + 1); tmp2 = strchr(tmp, ' '); if(!strncmp(tmp2 + 1, "MB", 2) { tmp[tmp2 - tmp] = '\0'; cnt += atoi(tmp); }
also jede zeile nach "(" durchsuchen, dann nach dem leerzeichen splitten und schaun obs die MB angabe ist und wenn ja den counter um die jeweilige Zahl erhöhen.
[edit] und übrigens du behandelst die erste file gar nicht [/edit]