0

曜日から個々の文字を取得しようとしています。これが私が持っているものです。

const char *daysOfTheWeek[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
const char *tc = daysOfTheWeek[dayOfWeek];
text_layer_set_text(&dow_one, &tc[0]);
text_layer_set_text(&dow_two, &tc[1]);
text_layer_set_text(&dow_three, &tc[2]);  

表示されているのは
&dow_one = ...
&dow_two = ed
&dow_three = d です

私が欲しいのは
&dow_one = W
&dow_two = e
&dow_three = d

& を削除して tc[0] を使用すると、コンパイル エラーが発生します。

83:9: エラー: 'text_layer_set_text' の引数 2 を渡すと、キャストなしで整数からポインターが作成されます [-Werror] /Users/myke/pebble_dev/pebble-sdk-release-001/watches/iWatch/include/pebble_os.h:677 :6: 注: 'const char *' が必要ですが、引数の型は 'char' です

これは、sprintf にアクセスできない組み込みシステムです。ピュア C のみ

4

1 に答える 1

1

コードでは、「文字列の途中」の場所を指しています (たとえば、&tc[1]「この文字列は と呼ばれますtcが、場所 [1] から開始します」へのポインタです)。そこから「最後まですべて」を取得します。 ('\0'ターミネーター)」。1 文字だけが必要な場合は、個々の文字列を長さ 1+1 の null で終了する文字列にコピーする必要があります。

static char dow1[2];
static char dow2[2];
static char dow3[2];
char tc[]="Wed";

dow1[0] = tc[0]; dow1[1]='\0';
dow2[0] = tc[1]; dow2[1]='\0';
dow3[0] = tc[1]; dow3[1]='\0';

これは、興味のある文字が含まれていることを前提としてtcいます。これで、次のことができます。

text_layer_set_text(&dow_one, dow1);
text_layer_set_text(&dow_two, dow2);
text_layer_set_text(&dow_three, dow3);

dow1それがchar配列の名前であり、最初の要素へのポインタでもあるという事実を利用しています。あなた自身のコメントに従って、私はそれらを次のように宣言していますstatic-これは、変数が宣言された関数が戻った後も変数が存在し続けることを意味します。値は後で表示目的で参照される可能性があるため、これは重要だと思います。

もちろん、本当にキャラクターだけが必要な場合は、

char c1, c2, c3;
c1 = tc[0];
c2 = tc[1];
c3 = tc[2];

それはあなたがそれをどのように使いたいかによって少し異なります.あなたの質問からあなたのtext_layer_set_text()関数が何をするのかはっきりしません. 少しググってみましたが、上記で問題ないと思いますが、Pebble を使用したことがないため、100% 確実とは言えません。

于 2013-05-01T21:28:26.827 に答える