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 的以空字符结尾的字符串:

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);

利用dow1char 数组的名称以及指向第一个元素的指针这一事实。根据您自己的评论,我将它们声明为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 回答