C:为什么尝试创建一个新的文件夹/目录时,为什么会遇到细分故障



我正在尝试使用两个命令行参数创建一个新文件夹,一个是目标文件夹,另一个是源,但是我得到了"分段故障(核心倾倒)"错误。您能帮我弄清楚导致此错误的原因。代码在下面。

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] = '';
    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: ");
        }
    }
}

我已经尝试过,以下代码正常工作为:

#include<stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/stat.h>
#include<string.h>
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(src, &srcfile) == -1) || (stat(dest, &destfile) == -1)){
        exit(0); //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] = '';
    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: ");
        }
    }
    return 0;
}

编译命令

gcc -Wall xxx.c

最新更新