Почему тип аргумента неверен (это int, когда он должен быть int *)? - PullRequest
0 голосов
/ 24 апреля 2019

Я пишу программу на C, которая сканирует значения и печатает их в следующем порядке: «значение 1 команды 1, значение 1 команды 2, значение 2 команды 1, значение 2 команды 2» и т. Д.в строке 'printf ("Команда 1 весит:% i \ n", team1);с сообщением 'format указывает тип int, но аргумент имеет тип' int * ', и я не могу понять, почему.Я думаю, что это как-то связано с массивами.Буду признателен за любую помощь!

#include <stdio.h>
#include <math.h>

int main() {

    printf("How many members of each team are there?\n");

    int team1 [] = {110, 113, 112, 117};
    int team2 [] = {106, 102, 121, 111};

    scanf("%i", &team1[4]);
    printf("How much do the players of team 1 weigh?\n");
    scanf("%i", &team1[4]);

    printf("Team 1 weighs: %i\n", team1);

        return 0;
    }
}

Я ожидаю, что на выходе будут напечатаны значения, которые я ввел, когда он запрашивал пользовательский ввод, например, "Сколько весят игроки команды 1?"Мой ответ: 43, 25, 64, 35. Печать «Команда 1 весит: 43, 25, 64, 35».

1 Ответ

4 голосов
/ 24 апреля 2019

team1 - это не int, это массив int размера 4. Массивы "decay" для указателей при передаче в функции, что объясняет, почему вы видите это сообщение об ошибке.

Вам необходимо отдельно распечатать все элементы, например, с помощью петли for.


Ваши scanf вызовы также неверны - вы читаете один элемент за пределами массива team1, что является неопределенным поведением. Вам необходимо отсканировать каждый элемент с помощью цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...