我试图从一周的这一天获得个人字符。这就是我所拥有的。
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
答案 0 :(得分: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);
利用dow1
是char数组的名称以及指向第一个元素的指针这一事实。根据你自己的评论,我将它们声明为static
- 这意味着变量在声明返回的函数之后继续存在,并且我认为这很重要,因为稍后可能会为了显示目的引用该值。
当然,如果你真的需要一个角色,那就是
char c1, c2, c3;
c1 = tc[0];
c2 = tc[1];
c3 = tc[2];
这取决于你想如何使用它 - 从你的问题中不清楚你的text_layer_set_text()
函数是做什么的。我用Google搜索了一下,我认为上面的内容应该对你好 - 但我没有使用过Pebble,所以我无法百分百肯定。