【发布时间】:2017-03-10 05:16:30
【问题描述】:
我正在尝试使用两个命令行参数创建一个新文件夹,一个是目标文件夹,另一个是源文件夹,但我收到“分段错误(核心转储)”错误。你能帮我弄清楚是什么导致了这个错误。代码如下。
int main(int argc, char **argv){
char *src = argv[1];
char *dest = argv[2];
DIR *srcdir;
DIR *destdir;
struct stat srcfile;
struct stat destfile;
struct dirent* directory;
if ((stat(argv[1], &srcfile) == -1) || (stat(argv[2], &src) == -1)){
exit(-1); //TODO: Change to proper error code
}
srcdir = opendir(src);
destdir = opendir(dest);
if ((srcdir == NULL)||(destdir == NULL)) {
printf("No such file or directory exist.\n");
exit(1);
}
char new_path[1024];
new_path[0] = '\0';
strcat(new_path, dest);
strcat(new_path, "/");
strcat(new_path, src);
if (stat(new_path, &destfile) == -1) {
if(mkdir(new_path, 0700) != -1){
mkdir(new_path, 0700);
}else{
perror("mkdir: ");
}
}
}
【问题讨论】:
-
src 和 dest 的值是多少?
-
@jay:我只是写了两个与函数在同一目录中的文件夹的名称。
-
此代码片段(第 14 行?)错误:
(stat(argv[2], &src),可能还有其他错误。下面的答案看起来是正确的,但您应该首先查看来自编译器的警告。
标签: c segmentation-fault mkdir stat opendir