关于指针数组的疑难问题

求老哥帮我看看代码,我实在看不出错在哪里,程序没报错,一运行经报错,哭了啊!!

题目:定义一个指针数组,其中每个指针指向一个字符型变量,使用循环输入一个字符串,并将字符串中所有字符的 ASCII 码值存储在指针数组中,然后输出这些 ASCII 码值。

int main() {
    char str[100]; // 定义一个字符数组
    char* ptr[100]; // 定义一个指针数组
    int i; // 循环计数器

    printf("请输入一个字符串:");
    scanf_s("%s", str); // 输入一个字符串

    // 将每个字符的 ASCII 码值存储在指针数组中
    for (i = 0; str[i] != '\0'; i++) {
        ptr[i] = &str[i];
    }

    // 输出指针数组中每个指针所指向的字符的 ASCII 码值
    printf("字符串中所有字符的 ASCII 码值:");
    for (i = 0; ptr[i] != NULL; i++) {
        printf("%d ", *(ptr[i]));
    }
    return 0;
}

我问CHatGPT了,他和我一样的问题,也给不出解决问题,或许我只是初学,不知道怎么问问题

img

img

scanf_s("%s", str,);
->
scanf_s("%s", str, 99);

char* ptr[100];
->
char* ptr = (char *)malloc(100*sizeof(char));

scanf_s("%s", str, 100);