请推荐最简单的转换,从整数,整数只能是0和1到char *,用C语言。
我有函数,它返回0或1作为整数。
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton));
在其他模块中,它是功能和第三个声明。
int set_locals(char* s_setting, char* s_value);
我尝试:
set_locals("my_prop", (char*)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)));
但这不起作用。
我知道如何使用sprintf,但是当这里只有0和1时可能有人知道更短的方式?
答案 0 :(得分:7)
最简单的方法是使用三元条件运算符:
set_locals("my_prop",
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)) ? "1" : "0" );
然而,这是一个const char*
,但是当您提出问题时,我认为这不会是一个问题。
答案 1 :(得分:2)
char *表示指向包含char(或连续char数组的开头)的内存位置的指针。因此,您不能直接使用值0或1而不会导致程序失败,因为0和1 不 表示内存位置。
您可以使用三元运算符,如下所示:
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)) ? "1" : "0"
并将其作为set_locals的参数提供。
答案 2 :(得分:1)
char x[] = "0";
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton))) *x = '1';
set_locals("my_prop", x);