Создать ссылки на файлы из заданного каталога в текущий. (С, Linux) Код есть, но есть и проблема.

программирование СИ

Здравствуйте.
Необходимо создать ссылки на файлы с расширением на заданную букву из заданного каталога в текущий.
В принципе, с горем пополам, все написано и с абсолютными путями работает. Но как указать текущий каталог (это я так понимаю тот из которого запущено мое приложение).
Пока указано так char pathname[50] = "./";
Но это не работает=(

Прошу прощения за код, до этого на СИ не писал вообще ничего даже Hello world.

Код:


#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/dir.h>
#include <dirent.h>
#include <string.h>

int main(int argc, char* argv[]) {

DIR *cat;
char* ext;
char* filename;
struct dirent *buf;
char papka[50]; //Путь к заданному каталогу
char* symbol = "t"; //Заданная буква расширения

strcpy(papka, argv[1]); //Путь к заданному каталогу присваиваю из агрументов
cat = opendir(papka);

//Читаю каталог
while ((buf = readdir(cat)) != NULL) {
char pathname[50] = "./"; //Путь к текущему каталогу (тут то и проблема)
strcpy(papka, argv[1]); //Сбрасываю путь на заданный
filename = buf->d_name;
printf("%s\n", filename); //Найденный файл
ext = strrchr(filename, '.');
if (ext != 0) {
printf("%s\n", ext + 1); //Расширение найденного файла

//Если буква в расширении нужная
if (!(strncmp(ext + 1, symbol, 1))) {
strcat(pathname, filename);
strcat(papka, filename);
printf("%s\n", pathname);
link(papka, pathname);
}
}
}

return 0;
}

Ответы:
./ - это команда запуска исполнимого файла
текущий каталог - это тильда.
текущий директорий получается так:
if (getcwd(pathname, sizeof(pathname)) != NULL) {
   // pathname содержит путь к текущему директорию
}


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.