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

156 天前
 desperadoo

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

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <errno.h>
#include <unistd.h>

// 创建目录,如果需要则递归创建父目录
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)) = '\0';

        // 检查目录是否存在
        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 <path>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

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

    printf("Directories created successfully\n");
    return 0;
}

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

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

936 次点击
所在节点    OpenAI
4 条回复
YongXMan
155 天前
试试 claude3
wencan
155 天前
代码出错不是很正常吗?
desperadoo
155 天前
@wencan 以往很稳定,最近频频出错。
wencan
155 天前
最近我都不能访问 chatgpt ,lz 是如何做到的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX