предупреждение: недопустимое преобразование указателя в целое число с символом и структурой в строку

У меня очень неприятная проблема...

Я должен иметь возможность отображать некоторый текст из структуры на ЖК-дисплее с микроконтроллера.

Это пораженные участки:

struct menu_id {
    char id;
    char menu[11];
    char submenu;
};

void main (void){
    struct menu_id mainmenu[5] = {
    {0, "CHNL1", 1},
{0, "CHNL2", 2},
{0, "Mal Codes", 3},

{1, "CHNL1...", 0},
{2, "CHNL2...", 0},
};

    print(mainmenu[0].id, mainmenu[0].menu);
}

void print (char line1, char line2)
{
    char temp[11];

    LCD_Register_Com();                                                      //Set to Command Register
    OutputChar(LCD_Line0);                                                  //Line 0,0
    LCD_Register_Data();                                                    //Set to Data Register
    sprintf(temp, "%c", line1);
    OutputString(temp);

    LCD_Register_Com();                                                     //Set to Command Register
    OutputChar(LCD_Line1);                                                  //Line 1,0
    LCD_Register_Data();                                                    //Set to Data Register
    sprintf(temp, "%c", line2);
    OutputString(temp);
}

Каждый раз, когда я пытаюсь создать код, он выдает эту ошибку. );».

Любая помощь приветствуется.

Спасибо.


person Reemahs    schedule 12.02.2013    source источник


Ответы (2)


void print (char line1, char line2)

изменить на

void print (char line1, char* line2)

и

sprintf(temp, "%c", line2);

to

sprintf(temp, "%s", line2);


С

mainmenu[0].menu

Вы передаете в функцию строку, а не символ.

struct menu_id {
    char id;
    char menu[11];  <- string
   char submenu;
};
person Community    schedule 12.02.2013
comment
+1 Тот факт, что он указывает указатель на целое число, а не указатель на char, предполагает, что прототип тоже отсутствует, но это определенно главная проблема здесь. - person Sergey Kalinichenko; 12.02.2013
comment
Эй, спасибо, что помогли в сборке и чистке фронта. Заявлен прототип. Я должен был включить это в свой вопрос, извините :) - person Reemahs; 12.02.2013

В объявлении вашей функции void print (char line1, char line2), line2 должно быть типа char *, поскольку меню представляет собой массив символов.

person Ganesh    schedule 12.02.2013