Вы не должны изменять argv[i]
. Даже если у вас есть, у вас есть только один argv[1]
, так что выполнение strcat()
будет продолжать добавлять к тому, что было в нем ранее.
У вас есть еще одна тонкая ошибка. Имя каталога и имена файлов в нем должны быть разделены разделителем пути, /
в большинстве систем. Вы не добавляете это в свой код.
Чтобы это исправить, вне вашего цикла while:
size_t arglen = strlen(argv[1]);
Вы должны сделать это в цикле while
:
/* + 2 because of the '/' and the terminating 0 */
char *fullpath = malloc(arglen + strlen(ep->d_name) + 2);
if (fullpath == NULL) { /* deal with error and exit */ }
sprintf(fullpath, "%s/%s", path, ep->d_name);
/* use fullpath */
free(fullpath);