2013-02-12 48 views
0

我有一個非常惱人的問題...警告:指針的非法轉換與char和結構整數串

我必須要能夠顯示從結構中的一些文字從上微控制器的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);」。

任何幫助將不勝感激。

謝謝。

回答

3
void print (char line1, char line2) 

變化到

void print (char line1, char* line2) 

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

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


With

mainmenu[0].menu 

您正在向函數傳遞一個字符串而不是char。

struct menu_id { 
    char id; 
    char menu[11]; <- string 
    char submenu; 
}; 
+1

+1,它說「指針爲整數」,而不是「字符指針」,這一事實表明,原型也丟失了,但這絕對是這裏的主要問題。 – dasblinkenlight 2013-02-12 16:15:33

+1

嘿,謝謝,幫助建立和清潔前線。原型被宣佈。我應該包括那與我的問題對不起:) – user1651453 2013-02-12 16:27:48

1

在你的函數聲明void print (char line1, char line2)line2應該是char *類型爲菜單是一個字符數組

相關問題