Для уточнения оператор fprintf был скопирован неправильно (моя ошибка, извините). Оператор fprintf должен фактически читать:
fprintf(fd2, "volume = %llu\n", vold);
Кроме того, хотя по общему признанию небрежно, максимальная длина массива voltemp составляет 9 байтов (цифр), что находится в пределах 32-разрядного целого числа.
Когда я вытаскиваю этот код из программы, частью которой он является, и запускаю его в тестовой программе, я получаю ожидаемый результат, который озадачивает.