Программа C: почему программа просит пользователя ввести дополнительный индекс (просит ввести еще один индекс)?

#arrays #c #input #malloc #scanf

#массивы #c #ввод #malloc #scanf

Вопрос:

Программа должна попросить пользователя ввести длину массива и значения для его ячеек.

Почему пользователь должен ввести на 1 число больше, чем я написал в условии?

 int main()
{
    int length, i, *p;
    
    printf("n Please enter the length of the array: n");
    scanf("%d", amp;length);   
    
    p = (int*)malloc(length*sizeof(int));
    
    printf("n Please enter %d values: n", length);
    
    for(i=0; i<length; i  ){
            
                scanf("n %d n", amp;p[i]);
            
                if(i==0){
            
                    *(p p[i]) = p[i];
                }else{
                    *(p p[i])  = p[i];
                }
            
                 
    }
 

Комментарии:

1. *(p p[i]) Для чего это предназначено? Почему вы добавляете p[i] к p , чтобы сформировать новый указатель? Также, пожалуйста, предоставьте точный журнал выполнения, то есть покажите точный ввод и результат.

Ответ №1:

Вам нужно изменить вторую строку сканирования.

 scanf("n %d n", amp;p[i]); /* Replace this line */
scanf("n %d", amp;p[i]); /* By this one */