C, Строковый массив не поддерживает преобразование строковой константы в 'char *' - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть простая программа, которая пытается распечатать некоторые массивы и расчеты, но при попытке использовать массив строк я получаю одно и то же сообщение

Это строковый массив

char *names[]={"Armstrong","Burns","Cousins","Duggan","Evans",
    "Field","Garnett","Hadfield","Johnston","Lovett","McDonald","Petersen","Singh"};

Функция и прототип

void printFunction(char*, int *, int *, int, int);

void printFunction(char* names, int income, int numMembers, int povertylevel,
    int totalavg) {

  char *avgInc = " ";
  if (income < povertylevel) {
    if (income + 5000 < povertylevel) {
      avgInc = "****";
    } else {
      avgInc = "***";
    }
  }

  else if (income > totalavg + 10000) {
    avgInc = "**";
  } else {
    avgInc = "*";
  }

  printf("%-11s %-10d %-8d %s \n", names, income, numMembers, avgInc);
}

Главный звонок

printFunction(*names,income,numMembers, povertylevel, averageIncome);

1 Ответ

1 голос
/ 07 февраля 2020

Объявление вашей функции должно выглядеть примерно так:

void printFunction(char**,int ,int , int , int );

Поскольку у вас есть массив строковых массивов, поэтому 1-й аргумент должен быть двойным указателем. Я не уверен, как вы хотите печатать имена, но с указателем arithmeti c:

*(names+i)

для печати всех имен.

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