Путь к проге
или GetModuleFileName()+ExtractFilePath()
Типа:
#include "conio.h"
int main(int argc, char* argv[])
{
printf("Hello World!\n");
printf(argv[0]);
getch();
return 0;
}
argv[0] в main и wmain содержит путь и имя exe-модуля
Но неужели какой-нибудь функции для этого в С не предусмотрено?
char *_getcwd( char *buffer, int maxlen );
Но неужели какой-нибудь функции для этого в С не предусмотрено?
В Си как раз-таки и предусмотрено получение пути через нулевой аргумент. Полагается, что нужные значения обеспечиваются средой вызова. Такой подход помимо всего прочего, еще и платформенно-независимый.
Мне нужна функция удаления файла и функция, возвращающая имена файлов в текущем каталоге.
Такая, как dir в бейсике, она отображает файлы подходящие под описаные параметре - т.е.
dir(C:\*bak) вернет имена файлов с расширением bak в корневом каталоге.
А какие еще есть функции для работы с файлами?
Мне нужна функция удаления файла и функция, возвращающая имена файлов в текущем каталоге.
Ну, если не из SysUtils.hpp, то:
char *getcurdir(char *buf, int buflen) - возвращает указатель на buf или NULL.(dir.h)
int remove(const char *filename) - удаляет файл (stdio.h).
Ко второму вопросу:
int findfirst const char *_FAR __path, struct ffblk _FAR * __ffblk, int attrib) - ищет по шаблону из первого параметра (*bac например), заносит результат во второй и возвращает 0 при успехе или -1 при неудаче (dir.h).
int findnext(struct ffblk _FAR * __ffblk) - продолжает дело начатое findfirst возвращая тоже и внося результаты в свой параметр, т.е. если ты нашел один файл, и при этом необходимо продолжить поиск, то пользуйся findnext (dir.h).
Правда в стандартности dir.h я не уверен - в Linux его например нет.
Теперь две предыдущие функции, только из SysUtils.hpp:
int FindFirst(AnsiString Path, int Attr, TSearchRec &file) - вносит данные о найденом файле в структуру типа TSearchRec - file.
int FindNext(TSearchRec &file) - продолжает начатый поиск.
FindClose(TSearchRec &file) - завершает начатый поиск и освобождает память из под структуры file.
Честно говоря, с ними работать гораздо удобнее.