c で unix func "cp" のアナログを実行すると、実現に問題が発生します。
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 dir
ここで: 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
本当にそれを修正する方法がわかりません:(