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: 警告:当我调用打印函数时,指针非法转换为整数,“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 回答