мелкое замечаньице: прежде чем в проге использовать argv[] с любым ненулевым индексом, надо проверить argc и убедиться, что оно больше единицы, т.е. када прога без параметров запускается, то argc=1 и argv[0] содержит путь к её файлу exe, а во всех остальных случаях надо проверить например что argc действительно ==2 и после этого пользоваться строкой из argv[1], иначе потенциальный баг будет.
соединить строки можно strcat(a, b) (вместо перегруженного оператора + ) и вроде в хелпе пишут что вот так
findfirst("c:\\dos\\test\\*.log", бла-бла
вроде можно и будет работать)
вообще я делал иначе, не уверен что так будет лучше - но оно работало))
берем каталог из командной строки и делаем туда cd то есть change dir. Он станет текущим, после чего там findfirst("*.log", бла-бла
Когда от findnext() выяснится что больше подходящих файлов нема, можно сделать cd обратно в каталог, откуда программа была запущена.
это см. про getcurdir() chdir() и их аналоги.
и еще, для пущей безопасности, лучше не использовать место в памяти, выделенное операционкой под массив параметров командной строки, в своих целях. То есть, не копировать "в" argv[] ничего и не присоединять к его имеющимся строкам другие строки.
т.е. вот как-то так:
char tmp[512];
strcpy(tmp, argv[1] ); // неплохо бы проверить длину строки и убедиться, что она влезет в 512 байт минус 1
strcat(tmp, "*.log"); // здесь то же самое, плюс надо проверить что последний символ в tmp это слэш (косая черта), и если юзер в командной строке указал путь без слэша в конце, добавить в tmp еще и слэш.
|