Страница 1 из 1

GetLogicalDriveStrings. Чё за косяк???

Добавлено: Сб дек 16, 2006 00:20
sadman
Создаю простейшую программу:

Код: Выделить всё

#include <windows.h>
#include <stdio.h>

void main()
{
  char cmd[50];
  GetLogicalDriveStrings(50, cmd);
  puts(cmd);
}
На выходе получаю:
A:
И всё!!! Хотя у меня еще есть логические диски!
Вопрос - чё за косяк??? :?

Добавлено: Сб дек 16, 2006 09:21
ZorroGFS
Возвращается не строка а строки заканчивая пустой. то есть в виде "a:\\\0c:\\\0\0"

Код: Выделить всё

void main() 
{ 
  char cmd[110]; 
  DWORD a=GetLogicalDriveStrings(110, cmd); 
  if(a){
	  for(int i=0;cmd[i];i+=4){
		  puts(cmd+i); 
	  }
  }
}

Добавлено: Вс дек 17, 2006 13:52
sadman
О! Пасиба! :)

[off]добавлено спустя 1 час:[/off]

такс, ну собсна в продолжение проблемы...
после получения списка дисков, хочется получить список каталогов из одного из дисков. Есть код:

Код: Выделить всё

char cPath[MAX_PATH];
printf("\nEnter the path  ");
gets(cPath);
hFile = FindFirstFile(cPath, &lpfd);

if(hFile == INVALID_HANDLE_VALUE)
{
  printf("\"%s\" - No such directory\n", cPath);
  main();
}
.......
Самое интересное то, что каждый раз hFile == INVALID_HANDLE_VALUE! Т.е. директория, скажем, С:\ не найдена. В чём тут может быть проблема?

зы раньше вроде всё работало, теперь абсолютно не понимаю в чём проблема... :help:

[off]добавлено спустя 11 часов:[/off]

Усё, проблема была найдена! Спасибо "братьям" с cboard'а!
Кому интересно, рассказываю: для того что-бы получить поддиректроирию, скажем диска с:\, необходимо вызывать FindFirstFile таким образом:

Код: Выделить всё

FindFirstFile("c:\\*", &lpfd);

Добавлено: Вт дек 19, 2006 18:15
Iulik D
sadman,
а то ты не знал что "\" евляется escape character

Добавлено: Вт дек 19, 2006 18:53
sadman
Iulik D,
всмысле? это тут причём?