Как я могу позволить пользователю вводить значения для массива с указанным начальным размером? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу иметь возможность запросить у пользователя этого кода четыре значения для массива.У меня есть некоторый код, но он печатает ошибку, которую я не могу обойти.Я пытаюсь смоделировать часть своего кода после примера из этого видеоурока: https://youtu.be/IPYA3b3_nyk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9Vlcjyymq, однако, я не могу заставить его скомпилироваться без ошибок.

Ошибка происходит следующим образом:В функции 'main': intitializeint.c: 12: 9: предупреждение: в формате '% d' ожидается аргумент типа 'int', но аргумент 2 имеет тип 'int *' [-Wformat =] printf ("Введите значение% d. \ n ", & i +`);^

Я пытался использовать printf () и scanf () для каждого приглашения для значения, но обнаружил, что это руководство, и попытался имитировать его.Я попытался переставить "& i + 1", но он просто возвращает ту же ошибку.Я хочу иметь приращение, чтобы в выводе он показывал, как будто массив начинался с 1.

 #include <stdio.h>
 #include <stddef.h>

 void printArray(int n[]);

 int main(void)
 {
     int i;
     int n[4];

     for (i = 0; i < 5; ++i) {
         printf("Enter value %d. \n", &i+1);
         scanf("%d", &n[i]);
     }

     printf("%s%13s\n", "Element", "Value");
     printArray(n);

     return 0;
 }

 void printArray(int n[])
{
     int i;
     for (size_t i = 0; i < 4; ++i)  {
         printf("%7zu%13d\n", i, n[i]);
     }
 }

1 Ответ

0 голосов
/ 18 апреля 2019

Когда вы писали &i, вы случайно создали указатель на i.Ваш указатель будет иметь тип int *, потому что это указатель на int.Спецификатор формата %d ожидает int, а не указатель на int, поэтому компилятор выдает эту ошибку.(Вам следует перечитать эту ошибку и убедиться, что каждое ее слово имеет для вас полный смысл.)

Решение состоит в том, чтобы удалить ошибочный оператор &:

printf("Enter value %d.\n", i + 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...