C 为什么我的代码中出现了分段错误?我能';不要调试它,请解释错误

C 为什么我的代码中出现了分段错误?我能';不要调试它,请解释错误,c,C,我不知道是什么导致了这个问题,在执行用于读取输入数组的for循环之后,我得到了一个“分段错误内核转储”。printf(“\n输入数组:”)将不会运行。请帮助我,通常我们会在scanf语句中得到一个“分段错误”,但看起来好像是在for循环完成后得到的错误。我添加了一个printf(“%d”,*(ptr+I))语句,以确保在打印输入值时执行此操作。但是,在键入数组的最后一个值之后,只要键入enter,我就会得到这个“segmentation fault core dumped” 请取消删除我的问题,

我不知道是什么导致了这个问题,在执行用于读取输入数组的for循环之后,我得到了一个“分段错误内核转储”。
printf(“\n输入数组:”)将不会运行。请帮助我,通常我们会在scanf语句中得到一个“分段错误”,但看起来好像是在for循环完成后得到的错误。我添加了一个
printf(“%d”,*(ptr+I))语句,以确保在打印输入值时执行此操作。但是,在键入数组的最后一个值之后,只要键入enter,我就会得到这个“segmentation fault core dumped”


请取消删除我的问题,我已在其输出中添加了完整的代码。

此“for(int I=j-1;I>0;I++)”设置I=0,并永远递增,因为停止条件是“I>0”。让我们知道这是否解决了问题
main
的正确返回类型是
int
,而不是
void
。OT:提示:而不是
*(ptr+I)
您应该编写
ptr[i]
。这完全是一样的,但可读性要高得多。因为循环条件是“i>0”,所以应该使用“i--”而不是“i++”,我认为条件应该是“i>=0”。使用valgrind,您将得到无效的写入,例如
ptr+i+1
#include<stdio.h>
#include<stdlib.h>

void main(){

    int n,temp;
    printf("Enter size of input array: ");
    scanf("%d", &n);
    int *ptr = (int *)malloc(n * sizeof(int));
    printf("\nEnter input array: ");
    for(int i=0;i<n;i++){
        scanf("%d", (ptr+i));
        printf("%d\n", *(ptr+i));
    }
    printf("\nEntered array: ");
    for(int i=0;i<n;i++)
        printf("%d ", *(ptr+i));
    for(int j=1;j<n;j++){
        temp = *(ptr+j);
        for(int i = j - 1;i>0;i++){
            if(temp < *(ptr+i)){
                *(ptr+i+1) = *(ptr+i);
                *(ptr+i) = temp;
            }
            else{
                break;  
            }
        }
    }
    printf("\nSorted  array: ");
    for(int i=0;i<n;i++)
        printf("%d ", *(ptr+i));
    printf("\n");
}  
chirag@abhishek-HP-Laptop-15q-dy0xxx:~/chirag_C/algorithms$ ./insertionsort
Enter size of input array: 3

Enter input array: 3 2 1
3
2
1

Segmentation fault (core dumped)
chirag@abhishek-HP-Laptop-15q-dy0xxx:~/chirag_C/algorithms$