2014-01-15 35 views
0

我得到的錯誤,因爲gtk_entry它需要字符類型作爲輸入,但我想給它的int類型,所以第一我聲明int類型,然後這個int類型被聲明爲字符類型並給予gtk_entry,但我得到錯誤。我得到的錯誤「警告:初始化使指針從整數沒有投[默認情況下]」

#include<gtk/gtk.h> 


void static call(GtkWidget *widget,gpointer data) 
{ 
g_print("\n%s\n",gtk_entry_get_text(GTK_ENTRY(data))); 
gint answ=4; 
const char* ans=answ; //here is the line having error 
gtk_entry_set_text(GTK_ENTRY(data),ans); 
gtk_editable_select_region(GTK_EDITABLE(data),0,-1); 

} 

int main(int agrc, char *agrv[]) 

{ 
gtk_init(&agrc,&agrv); 
GtkWidget *entry,*window,*button,*hbox; 

window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 
g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL); 

hbox=gtk_hbox_new(0,0); 
gtk_container_add(GTK_CONTAINER(window),hbox); 
button=gtk_button_new_with_mnemonic("write text"); 
entry=gtk_entry_new(); 
g_signal_connect(button,"clicked",G_CALLBACK(call),entry); 
g_signal_connect(entry,"activate",G_CALLBACK(call),entry); 



gtk_box_pack_start(GTK_BOX(hbox),button,0,0,0); 

gtk_box_pack_start(GTK_BOX(hbox),entry,0,0,0); 

gtk_widget_show_all(window); 
gtk_main(); 
return 0; 

} 
+0

究竟是什麼,讓你錯誤的行? –

+0

'const char * ans = answ;' – user3132152

+0

同樣,爲什麼要將整數4賦給char?或者是你想要分辨的字符'4'? –

回答

0

當你要轉換的整數爲char,所以你可以通過這樣的整數作爲參數,你會做什麼:

#include <stdio.h> 

    int main(void) 
    { 
     char c[4]; 
     int i=5; 
     sprintf(c, "%d", i); 
     printf("%s %d", c, i); 
     return 0; 
    } 

你用sprintf打印您的整數轉換爲字符變量,然後用它。有一個功能itoa是不標準的,但也會幫助你。

itoa使用,如:

itoa(c, i, 10); 

編輯:

你的代碼,我覺得工作是:

gint x=4; 
char y[4]; 
sprintf(y, "%d", x); 
gtk_entry_set_text(GTK_ENTRY(data),y); 
+0

'GINT X = 4;' \t'爲const char * Y;' \t'itoa(X,Y,10);' 'gtk_entry_set_text(GTK_ENTRY(數據)中,y);'我已試過,但現在我我得到另一個錯誤'(.text + 0x4f):未定義引用itoa collect2:ld返回1退出狀態' – user3132152

+0

您可以嘗試我張貼上面的更正,或者嘗試添加#include 這是itoa所需的庫 –

+0

謝謝:)。它的工作現在。我想知道爲什麼使用'char y [4]'而不是'char y'的一件事。我是C新手,所以這可能是一個愚蠢的問題,但我想學習的東西 – user3132152

相關問題