Die Rechnerei geht mit long genausogut, wenn man ein bißchen aufpaßt:
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);