我正在为 Pebble 开发,并且遇到了一些困难。
我正在尝试用两个字符串和两个值填充一个 text_layer,就像这样:
WAIT AVG: 3 MAX: 5
由于 Pebble SDK 不支持 malloc,所以我不能使用 sprintf,因此我被迫使用 snprintf。以下代码只打印“4”:
非常感谢您的帮助。我知道我可以创建4个单独的TextLayers,但这对我来说是最后的选择。
我正在尝试用两个字符串和两个值填充一个 text_layer,就像这样:
WAIT AVG: 3 MAX: 5
由于 Pebble SDK 不支持 malloc,所以我不能使用 sprintf,因此我被迫使用 snprintf。以下代码只打印“4”:
srand(time(NULL));
int average = (rand()%6)+1;
int maximum = average + 2;
static char *avgText="WAIT AVG: ";
static char *maxText="MAX: ";
snprintf(labelText,sizeof(avgText) + sizeof(average) + sizeof(maxText) + sizeof(maximum),"%s %d %s %d",avgText,average,maxText,maximum);
非常感谢您的帮助。我知道我可以创建4个单独的TextLayers,但这对我来说是最后的选择。
sprintf
依赖于malloc
? - Cory Nelsonn
来防止缓冲区溢出,因为n
是要填充的最大缓冲容量。 - A Personsizeof(char)
保证为1
。 - Cory Nelsonsizeof(所使用的类型)
是有用的:),不确定 Pebble SDK 是否支持宽字符。 - A Personsprintf
以避免膨胀,然后在可疑的前提下屈服并添加了snprintf
,以避免缓冲区溢出。但它并没有做到!https://dev59.com/dGct5IYBdhLWcg3wL6qi - Roddy