Software > Coding
Mit Pure C ja, mit AHCC nein.
laufkopf:
Ich hab ne Lösung ohne Floats gefunden 8)
mfro:
Die Rechnerei geht mit long genausogut, wenn man ein bißchen aufpaßt:
--- Code: ---free = phdfree.b_free * phdfree.b_clsiz * phdfree.b_secsiz / 1024;
full = phdfree.b_total * phdfree.b_clsiz * phdfree.b_secsiz / 1024;
percentage = 100 * free / full;
sprintf(str, "Laufwerk %c %d.%d MB (%d%%) von %d.%d MB frei", i + 'A',
free / 1024, free % 1024, percentage, full / 1024, full % 1024);
--- Ende Code ---
laufkopf:
Ich hab es nun mit etwas herumschieben geschafft.
--- Code: ---#ifdef __AHCC__
uint32_t gesamt[32], frei[32];
#else
double gesamt[32], frei[32];
#endif
--- Ende Code ---
--- Code: ---ifdef __AHCC__
gesamt[i] = (((((*phdfree).b_secsiz>>8) * (*phdfree).b_clsiz) * (*phdfree).b_total)>>12);
frei[i] = (((((*phdfree).b_secsiz>>8) * (*phdfree).b_clsiz) * (*phdfree).b_free)>>12);
printf("Gesamt Speicher in MB: %ld\n", gesamt[i]);
printf("Freier Speicher in MB: %ld", frei[i]);
#else
gesamt[i] = (double)( (double)( (double)( (double)( (*phdfree).b_clsiz * (*phdfree).b_secsiz) * (*phdfree).b_total) / 1024) / 1024);
frei[i] = (double)( (double)( (double)( (double)( (*phdfree).b_clsiz * (*phdfree).b_secsiz) * (*phdfree).b_free) / 1024) / 1024);
printf("Gesamt Speicher in MB: %.2lf\n", gesamt[i]);
printf("Freier Speicher in MB: %.2lf",frei[i]);
#endif
--- Ende Code ---
Sicherlich schaut das nicht soo elegant aus, aber funktioniert.
edit: ok, nachkommastellen gibt es hier jetzt auch nicht.
edit2: und sieht nicht so elegant aus
mfro:
Nur kurz draufgeguckt: phdfree ist nicht initialisiert. Wundere dich also nicht, wenn seltsame Dinge passieren.
laufkopf:
hm, bisher alles normal
hab dann aber noch was abgeändert.
DISKINFO *phdfree = malloc(sizeof(DISKINFO));
und das dann nach main verschoben.
Immer noch alles ok.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln