Господа (и дамы) программисты, объясните мне пожалуйста, почему функция gtk_entry_get_text() может возвращать значение 0?
Вот код, если нужно:
#include <gtk/gtk.h>
#include <stdio.h>
void qs(GtkWidget *widget,int mass[])
{
int i=0;
for (i; i<5; i++)
{
g_print("%i\n",mass[i]);
}
}
int main(int argc, char** argv) {
int a[5];
GtkWidget *window;
GtkWidget *table;
GtkWidget *label0;
GtkWidget *label1;
GtkWidget *label2;
GtkWidget *label3;
GtkWidget *label4;
GtkWidget *label5;
GtkWidget *label6;
GtkWidget *combo;
GtkWidget *entry1;
GtkWidget *entry2;
GtkWidget *entry3;
GtkWidget *entry4;
GtkWidget *entry5;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "Лабораторная работа №2");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
table = gtk_table_new(8,2,FALSE);
gtk_container_add(GTK_CONTAINER(window), table);
label0 = gtk_label_new("Введите числа");
label1 = gtk_label_new("число 1:");
label2 = gtk_label_new("число 2:");
label3 = gtk_label_new("число 3:");
label4 = gtk_label_new("число 4:");
label5 = gtk_label_new("число 5:");
label6 = gtk_label_new("направление сортировки");
gtk_table_attach(GTK_TABLE(table), label0, 0, 2, 0, 1,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label3, 0, 1, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label4, 0, 1, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label5, 0, 1, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label6, 0, 1, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
entry1 = gtk_entry_new();
entry2 = gtk_entry_new();
entry3 = gtk_entry_new();
entry4 = gtk_entry_new();
entry5 = gtk_entry_new();
gtk_table_attach(GTK_TABLE(table), entry1, 1, 2, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry2, 1, 2, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry3, 1, 2, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry4, 1, 2, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), entry5, 1, 2, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
combo = gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По возростанию");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По убыванию");
gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
button = gtk_button_new_with_label("Сортировать");
gtk_table_attach(GTK_TABLE(table), button, 0, 2, 7, 8,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
a[0]= atoi(gtk_entry_get_text(GTK_ENTRY(entry1)));
a[1]= atoi(gtk_entry_get_text(GTK_ENTRY(entry2)));
a[2]= atoi(gtk_entry_get_text(GTK_ENTRY(entry3)));
a[3]= atoi(gtk_entry_get_text(GTK_ENTRY(entry4)));
a[4]= atoi(gtk_entry_get_text(GTK_ENTRY(entry5)));
gtk_widget_show_all(window);
g_signal_connect(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect(button, "clicked",
G_CALLBACK(qs), a);
gtk_main();
return 0;
}
Примечание:
мне в данный момент не до русского языка, уж простите. когда будет что сортировать тогда и русский язык поправим.
Примечание:
В общем я просто дурочка. Переписала, заработало:
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
GtkWidget *edit[5];
void qs(GtkWidget *widget, gpointer *data)
{
int n=5;
int i=0;
int a[5];
a[0]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[0])));
a[1]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[1])));
a[2]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[2])));
a[3]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[3])));
a[4]= atoi(gtk_entry_get_text(GTK_ENTRY(edit[4])));
i=0;
for (i; i<5; i++)
{
g_print("%i\n",a[i]);
}
g_print("\n");
}
int main(int argc, char** argv) {
GtkWidget *window;
GtkWidget *table;
GtkWidget *label0;
GtkWidget *label1;
GtkWidget *label2;
GtkWidget *label3;
GtkWidget *label4;
GtkWidget *label5;
GtkWidget *label6;
GtkWidget *combo;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "Лабораторная работа №2");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
table = gtk_table_new(8,2,FALSE);
gtk_container_add(GTK_CONTAINER(window), table);
label0 = gtk_label_new("Введите числа");
label1 = gtk_label_new("число 1:");
label2 = gtk_label_new("число 2:");
label3 = gtk_label_new("число 3:");
label4 = gtk_label_new("число 4:");
label5 = gtk_label_new("число 5:");
label6 = gtk_label_new("направление сортировки");
gtk_table_attach(GTK_TABLE(table), label0, 0, 2, 0, 1,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label2, 0, 1, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label3, 0, 1, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label4, 0, 1, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label5, 0, 1, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), label6, 0, 1, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
edit[0] = gtk_entry_new();
edit[1] = gtk_entry_new();
edit[2]= gtk_entry_new();
edit[3]= gtk_entry_new();
edit[4]= gtk_entry_new();
gtk_table_attach(GTK_TABLE(table), edit[0], 1, 2, 1, 2,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[1], 1, 2, 2, 3,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[2], 1, 2, 3, 4,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[3], 1, 2, 4, 5,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_table_attach(GTK_TABLE(table), edit[4], 1, 2, 5, 6,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
combo = gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По возрастанию");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo),"По убыванию");
gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 6, 7,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
button = gtk_button_new_with_label("Сортировать");
gtk_table_attach(GTK_TABLE(table), button, 0, 2, 7, 8,
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);
gtk_widget_show_all(window);
g_signal_connect(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect(button, "clicked",
G_CALLBACK(qs), NULL);
gtk_main();
return 0;
}