【发布时间】:2011-10-26 07:20:55
【问题描述】:
我尝试使用 sprintf 附加一个 int、string 和一个 int。
sprintf(str,"%d:%s:%d",count-1,temp_str,start_id);
这里,start_id 的值总是一样的。 char * 的 temp_str 的值每次都会增加。我得到了一段时间的正确输出,然后我的 sprintf 开始在 temp_str 和 startid 之间打印垃圾字符。所以我的 str 被损坏了。
谁能解释这种行为?
例子
计数 11
11:1:2:3:1:2:3:1:2:3:1:21:3:1:2:3:1:2:3:1:2:3:1:2 :3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3 :1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1 :2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2
计数 8
8:1:2:3:1:2:3:1:2:3:1:21:3:1:2:3:1:2:3:1:2:3:1:2 :3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3 :1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1 :2:3:1:2:3:1:2:3:1:2:3:1:2:3:1:2:3:1�:2
我不明白为什么以及如何将“�”附加到字符串
【问题讨论】:
-
发布所有变量的定义和一些代码。可能
str不够高。 -
在您使用 sprintf 的情况下,至少 99% 的情况下您实际上应该使用 snprintf。