c - snprintf + 鹅卵石

标签 c sizeof strlen printf pebble-sdk

我正在为 Pebble 开发,但我的开端并不顺利。

我正在尝试使用 2 个字符串和 2 个值填充 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 个单独的 TextLayer,但这对我来说是最后的选择。

最佳答案

您只是错误地使用了 snprintf。 ;-)

第二个参数(您正在尝试计算,很糟糕)是您要打印到的字符数组的长度,不是您要写入的字符数。

像这样的东西应该可以工作:

char labelText[64]; // Is this big enough?
snprintf(labelText, 64,"%s %d %s %d",avgText,average,maxText,maximum);

关于c - snprintf + 鹅卵石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999114/

相关文章:

c - as400 : C headers include

c++ - CRC/Parity/Hamming 保护 16 位并行总线

c - C 中的数组类型转换

c - malloc() 如何完成字节对齐?

C++ 数组大小

c++ - 当参数是指向数组的取消引用的指针时,为什么 `sizeof()`无法按预期工作?

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

c - 字符串长度导致极大的数字

php - 对于相同的值,Mysql 字符串检查 equals 是 false

c - 如何处理for循环中的指针