Делая аналог UNIX Func "ф" на с и у меня есть проблемы с реализацией:Проблемы с strcat [C] для UNIX
struct stat fsd;
stat(argv[argc - 1], &fsd);
if ((fsd.st_mode & S_IFMT) == S_IFDIR) {
unsigned int i;
for (i = src; i < argc - 1; i++) {
char *xpath = strcat(argv[argc - 1], "/");
xpath = strcat(argv[argc - 1], argv[i]);
if (cpf(argv[i], xpath) == 0) {
printf("%s -> %s\n", argv[i], xpath);
}
}
}
Пример команды: ./cp F1 F2 F3 F4 реж
Где: f * - файлы и каталог dir. Итак, файлы нужно скопировать в каталог, но я не могу создать правильный путь для каталога.
Выход:
f1 -> dir/f1
f2 -> dir/f1/f2
f3 -> dir/f1/f2/f3
f4 -> dir/f1/f2/f3/f4
Но мне нужно:
f1 -> dir/f1
f2 -> dir/f2
f3 -> dir/f3
f4 -> dir/f4
действительно не имеют ни малейшего представления о том, как это исправить :(
Прочтите man-страницу для 'strcat()', действительно. Ваш буфер слишком мал. –
'argv [argc - 1]' '_not_ yours, чтобы писать в конце. Создайте свой собственный буфер для записи/добавления. – mah