在 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
真的不知道如何解决它:(