инициализатор массива должен быть списком инициализатора или строковым литералом c - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в C. Я не знаю, почему я получаю эту ошибку и как ее исправить?

void FPS_PRINT_ENROLLED(){
  int checkNum = 0;
  int ID = 0;
  int num_Enroll = 0;
  num_Enroll = Available_ID();
  char strNum[3] = 0;
  itoa(num_Enroll, strNum);
  uint32_t numLen = strlen((char *)strNum);
  UART_send_A3("Number of Stored Prints: ", 25);
  UART_send_A3(&strNum, numLen);
  }

Сообщение об ошибке: array initializer must be an initializer list or string literal

Пожалуйста, смотрите прикрепленный скриншот сообщения об ошибке. Также файл c прилагается.

Screenshot of error message

Кстати, это в PSoC Creator 4.1, где используется язык C.

ссылка для скачивания файла кода через GoogleDrive

1 Ответ

0 голосов
/ 14 ноября 2018
char strNum[3] = 0;

Эта строка создает трехсимвольную строку. Затем вы используете его как строку с функцией strlen и uart_send.

Как строка C, она должна заканчиваться нулевым символом, поэтому у вас есть только два используемых символа. Он также должен быть инициализирован как строка, компилятор сообщает вам, что вы сделали это неправильно.

Попробуйте что-то вроде одной из этих строк

char strNum[3] = ""; // Empty string
char strNum[3] = "AB"; // Full string
char strNum[3] = "0"; // String holding the character zero
...