#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 */