Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Создание массива строк,где  каждая строка оканчивается null (http://forum.oszone.net/showthread.php?t=30542)

Crew 18-04-2003 21:47 209024

Несомненно, что многим приложениям приходится выполнять различные файловые операции, как-то копирование, перемещение, удаление или переименование файлов. Есть строенная поодержка файловых операций в Win32 допускает использование джокерных символов (я не знаю, что это такое) и указывать целые ветви каталогов. Прототип функции:
Код:

WINSHELLAPI int WINAPI SHFileOperation (LPSHFILEOPSTRUCT lpFileOp);
В функцию передается только структура, которая определяет способ выполнения оболочкой файловых операций. Состав структуры:
Код:

typedef struct_SHFILEOPSTRUCT {
    HWND hWnd;
    UINT wFunc;
    LPCSTR pFrom;
    LPCSTR pTo;
    FILEOP_FLAGS fFlags;
    BOOL fAnyOperationAborted;
    LPVOID hNameMappings;
    LPCSTR lpszProgressTitle;
}

 
.......
Файлы, над котороми выполняются операции, определяются параметрами pFrom и pTo, которые в действительности являются указателями на массив строк. Каждая строка заканчивается нулем (значением null), конец массива обозначется двумя значениями null. Даже если передается единственное имя файла, строка завершается двойным null.

Так вот у меня совсем не получается создать такой массив строк. Я даже не знаю с какой стороны подлезть, потому-что в моем понимании '\0' означает конец строки и все функции работы со строками думают точно так же. Или я не так понял null?
Если кто пользовался приведенной функцией, пожалуйста пример :)

ivank 19-04-2003 16:44 209025

Crew
Если я правильно понял, то передаётся нечто вроде "C:\\some\\path\\file\0C:\\some\\another\\path\\file\0\0"

Crew 19-04-2003 22:46 209026

а вот как программным  способом их склеить?
strcat мне не помог

ivank 20-04-2003 01:12 209027

Crew
Ручками :) Код тривиален.

Crew 20-04-2003 17:00 209028

Если б догадался не спрашивал бы. Флеймим, товарищь модератор? :)

shurikan 22-04-2003 01:56 209029

Crew
Да не флеймит он...
Выделяешь буфер достаточного размера. Используешь указатель на этот буфер. Копируешь через этот указатель одну строку. Ищешь '\0'. Устанавливаешь указатель на следующий байт. Копируешь через этот указатель следующую строку... И т.д. Пока строки не закончатся. А как закончились, записываешь ещё один нолик...:biggrin:

Crew 22-04-2003 16:59 209030

shurikan
спасибки:biglaugh:


Время: 15:36.

Время: 15:36.
© OSzone.net 2001-