0

私は本当に厄介な問題を抱えています...

構造体のテキストを、マイクロ コントローラーの LCD ディスプレイに表示できる必要があります。

影響を受ける地域は次のとおりです。

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);
}

コードをビルドしようとするたびに、このエラー Main_Test.c:108: warning: illegal conversion of pointer to integer for when I call the print function, "print(mainmenu[0].id, mainmenu[0].menu );」。

どんな助けでも大歓迎です。

ありがとうございました。

4

2 に答える 2

3
void print (char line1, char line2)

への変更

void print (char line1, char* line2)

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

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


mainmenu[0].menu

char ではなく文字列を関数に渡しています。

struct menu_id {
    char id;
    char menu[11];  <- string
   char submenu;
};
于 2013-02-12T16:11:57.267 に答える
1

関数宣言void print (char line1, char line2)では、メニューは文字配列であるline2ため、タイプにする必要がありますchar *

于 2013-02-12T16:12:08.790 に答える