最近感觉 ChatGPT 经常出错,就连最拿手的代码也有问题,十分误导人

12次阅读

共计 1003 个字符,预计需要花费 3 分钟才能阅读完成。

最近 GPT-4 给人的回复特别奇怪,有时候牛头不对马嘴,有时候出现错别字,甚至连比较擅长的代码也出错了,各位帮忙看看,它是不是出智障问题了。

我想让它用 C 语言实现 shell 中 mkdir- p 效果的代码,它的回复如下:

#include 
#include 
#include 
#include 
#include 
#include 

// 创建目录,如果需要则递归创建父目录
int mkdir_p(const char *path) {char *copypath = strdup(path);
    char *sp;  // 用于 strtok_r 的保存指针
    char *p = NULL;
    int status = 0;

    errno = 0;

    // strtok_r 需要一个可修改的字符串
    for (p = strtok_r(copypath, "/", &sp); p != NULL; p = strtok_r(NULL, "/", &sp)) {
        // 在每一个中间步骤上,逐步构建路径
        if (p == copypath) { // 特殊处理以斜杠开头的路径
            continue;
        }

        // 逐层路径累加
        *(p + (p - copypath) + strlen(p)) = '';

        // 检查目录是否存在
        struct stat st;
        if (stat(copypath, &st) != 0) {
            // 目录不存在,创建之
            if (mkdir(copypath, 0777) != 0 && errno != EEXIST) {
                status = -1;
                break;
            }
        } else if (!S_ISDIR(st.st_mode)) {
            // 不是目录,抛出错误
            status = -1;
            break;
        }

        *(p + (p - copypath) + strlen(p)) = '/';  // 恢复 '/'
    }

    free(copypath);
    return status;
}

int main(int argc, char *argv[]) {if (argc < 2) {fprintf(stderr, "Usage: %s n", argv[0]);
        exit(EXIT_FAILURE);
    }

    if (mkdir_p(argv[1]) != 0) {perror("mkdir_p failed");
        exit(EXIT_FAILURE);
    }

    printf("Directories created successfullyn");
    return 0;
}

其中的 *(p + (p - copypath) + strlen(p)) = ''; 应该是有问题,甚至会造成数组越界吧。

V 友们看看是它变智障了,还是我加班加傻了。

正文完
 0