2012-01-31 22 views
1

に変換してください。整数が0と1からchar *までの整数からC言語で最も簡単に変換されることをお勧めします。Cの基礎では、整数0と1をchar *

整数として0または1を返す関数があります。

gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)); 

他のモジュールでは機能し、3番目の宣言にあります。

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しかないかもしれません。

set_locals("my_prop", 
    gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)) ? "1" : "0"); 

は、しかし、これはconst char*ですが、あなたが問題を提示して、私はそれが問題になるとは思わない。このため

+2

ポインタをnullまたは1にしますか?それが指す文字を0または1にしたいとは限りませんか? – RussS

+0

あなたが見ることができるように、私はまだ指針に問題がありますが、上の状況をよく示しています。 –

答えて

7

最短の方法は、三項条件演算子を使用することでしょう。

+0

これは華麗な答えです:) – noMAD

+0

私はちょうど同じ答えを書くつもりでした...私はあまりにも遅いときに私はそれが嫌いです;) – LihO

+0

ルーシアンありがとうございます。短く完全に機能する。ちょうど私が探しているもの。他の言語では、この状態を「IIF」と呼びます。 –

2

char *は、char(またはcharの連続した配列の先頭)を含むメモリ位置へのポインタを表します。したがって、0と1はではないので、0または1の値を直接使用することはできません。はメモリの場所を表します。

gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton)) ? "1" : "0" 

とset_localsの引数としてそれを提供します。あなたは何ができるか

は、次のように三項演算子を使用しています。

+0

私は彼が "0"と "1"を望んでいると思っていました。 –

+0

@LuchianGrigore:はい、私も答えは早すぎました。より完全にあなたのもの。 – Karolos

+0

ありがとうKarolos、うまく動作します! –

1
char x[] = "0"; 
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(mytogglebutton))) *x = '1'; 
set_locals("my_prop", x); 
+0

最短ではありませんが、特定の条件では絶対に適用されます。 〜 –

関連する問題