#include <iostream>
#include <tchar.h>
#include <windows.h>
using namespace std;
#ifdef _UNICODE
#define output wcout
#else
#define output cout
#endif
int main() {
const size_t buffer_size = 26*4 + 1;
TCHAR buffer[buffer_size];
GetLogicalDriveStrings( buffer_size, buffer);
for(LPTSTR c = buffer; *c; c+=1+_tcslen(c) )
output << c << endl;
return 0;
}
40 znaków to za mało w ogólnym przypadku. liter łacińskich jest 26, więc dysków też. każdy dysk to minimum 4 znaki: A:<NULL>
tablica którą dostajesz to kupa stringów oddzielona NULLami, musisz przeglądnąć tę tablicę, przeskakując od napisu do napisu. jak spróbujesz wypisać bufor, to pisanie stanie po napotkaniu pierwszego NULLa, a bufor zawiera:
dysk<NULL>dysk<NULL> ... <NULL>dysk<NULL><NULL>
używasz LPSTR - ok, to się dostosowałem, i masz to napisane w stylu unicode-friendly