View Full Version : [C++][GTK] Cast tra gint e int
Damage92
28-02-2009, 17:58
Salve!
Sto cercando di imparare a programmare in c e ad usare le gtk.
Nel programma prendo un numero da una casella di testo, memorizzandolo dentro un puntatore di tipo gint (ma funziona anche gchar).
Se stampo il valore direttamente funziona tutto, se invece lo riverso dentro una variabile di tipo int, cosa che dovrei fare per utilizzare il numero nel mio programma, mi restituisce dei valori random assurdi... :confused:
Grazie a chiunque mi aiuterà! :) :)
Damage92
01-03-2009, 20:51
up? :cry:
DanieleC88
01-03-2009, 22:45
Valori random? Di che tipo? Si può vedere un esempio di codice?
Non so come funzionino le gtk, ma in genere non è necessario fare il cast in questi casi... In genere si utilizzano delle funzioni per esempio per paragonare due gint, senza che tu li debba assegnare a un int. Cioè in pratica tutte le operazioni che il tuo algoritmo dovrebbe eseguire su int, le fai eseguire sui gint, utilizzano le opportune funzioni messe a disposizione dalle gtk...
Damage92
02-03-2009, 16:06
Questo è un esempio di programma (main() contiene solo il codice di gtk).
Il warning che da è: warning: assignment discards qualifiers from pointer target type, ma non capisco cosa significa :help:
Comunque usare solo i tipi delle gtk è una soluzione, però essendo il primo programma che scrivo volevo stare ancora sul facile... :D
//questo lo compilo con: gcc -Wall -g prova.c `pkg-config --cflags --libs gtk+-2.0`
#include <gtk/gtk.h>
//funzione che prende il testo (ma a cosa serve il primo parametro? senza non funziona...)
void prendi_testo(GtkWidget *widget, GtkWidget *entry){
gchar *testo;
int numero;
testo=gtk_entry_get_text(GTK_ENTRY(entry)); //entry è il widget gtk
g_print("\ntesto: %s", testo); //qui stampa il testo correttamente
numero=(int)*testo; //warning: assignment discards qualifiers from pointer target type (??? O.o)
g_print("\nnumero: %d\n", numero); //qui stampa il valore errato (1=49, 2=50...10=49, 11=49, 20=50...)
}
//qui il codice delle gtk per creare la grafica
int main(int argc,char *argv[]){
gtk_init(&argc, &argv);
GtkWidget *entry;
entry=gtk_entry_new();
GtkWidget *window;
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *button;
button=gtk_button_new_with_label("prendi_testo");
GtkWidget *hbox;
hbox=gtk_hbox_new(FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox),entry,TRUE,FALSE,2);
gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,FALSE,2);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (prendi_testo), (gpointer) entry);
gtk_container_add(GTK_CONTAINER(window),hbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
DanieleC88
02-03-2009, 17:29
Non puoi convertire un testo ("123") in un numero (123) direttamente mi sa, al momento non posso fare molte prove quindi non so dirti di preciso. Probabilmente gchar è un tipo non segnato, mentre int è un tipo segnato, e quando lo converti succedono casini.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.