gpt4 book ai didi

c - GTK C - 获取指向 gint64 的指针的值以提供给 gtk_list_store_set

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:40 27 4
gpt4 key购买 nike

我想我这里有一个纯 C 问题,它与 GTK 无关,但我不确定。

我有这个函数,我在其中检索 GtkEntry 的内容,使用另一个函数将 gchar 转换为 gint64,然后我想将它添加到列表中。你,虽然第一个 printf 给了我正确的值,但第二个给了我不正确的值。

所以,我不知道如何将 *c 中包含的这个值传递给 gtk_list_store_set。

    void on_button_add_clicked (GtkButton *button, app_widgets *app_wid) {

GtkTreeIter iter;

//get the entry content
gint64 *c = mult_by_100_char2int(gtk_entry_get_text(GTK_ENTRY(app_wid->ent_mont)));
printf("c=%li\n",*c);
gint64 cval = *c;
printf("cval=%li\n",cval);

//put in the liststore
GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(app_wid->treeview)));
gtk_list_store_append(store, &iter); // Acquire an iterator
gtk_list_store_set(store, &iter,
AMOUNT_COLUMN, cval, //the column requires a gint64
-1);

}

//prototype of other function is:
gint64* mult_by_100_char2int (const gchar* number)

编辑:(添加的功能 - 以相反的顺序)

gint64* mult_by_100_char2int (const gchar* number) {

const gchar* buf1 = mult_by_100(number);
gint64 buf2 = g_ascii_strtoll(buf1,NULL,10);
gint64 *buf3 = &buf2;

return buf3;

}

gchar* mult_by_100 (const gchar *number) {

int thesize = strlen(number);

gchar *entiers = substring(number,0,thesize-3);
gchar *centimes = substring(number,thesize-2,2);
gchar *result = g_strjoin("",entiers,centimes,NULL);

return result;
g_free(result);
}

gchar* substring(const gchar* s, int p, int l) {

char sub[128] = "";
char schar[128] = "";
gchar* result;
int i;

strcat(schar,s);

for(i=0;i<l;i++) {
sub[i] = schar[p+i];
//printf("i=%d - sub=%s\n",i,sub);
}
sub[i+1] = '\0';

result = g_strdup(sub);
return result;
g_free(result);
}

最佳答案

buf3mult_by_100_char2int 局部变量的地址。一旦 mult_by_100_char2int 返回,这个变量就不再存在了。您的程序无权访问它。

第一个 printf 产生了正确的结果是一个不幸的巧合。我们可能会推论它为什么会发生(如果删除第一个 printf 使第二个看起来正常工作,我不会感到惊讶),但最重要的是行为是未定义的。

关于c - GTK C - 获取指向 gint64 的指针的值以提供给 gtk_list_store_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48006241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com