allDisks[i] = s;
здесь вы присваиваете переменной указатель на кусок памяти находящейся в переменной
char buf[128];
,а эта переменная является локальной автоматической в функции, и после выхода этот кусок памяти переиспользуется программой.
Как исправить: здесь
allDisks[i] = s;
создавать копию строки. Или использовать статический буфер. Точнее не подскажу, давно не работал с Си.