我传递一个空的字符数组,我需要递归使用strcat()
填充。但是,在VS调试器中,数组不是空的,它充满了我不认识的一些奇怪的垃圾字符。 strcat()然后追加到这些垃圾字符的末尾,而不是在数组的前面。VS2008中的char []问题 - 为什么strcat追加到空数组的末尾?
我也尝试过encoded[0] = '\0'
在传递数组之前清除垃圾,但接着strcat()不会在递归调用中追加任何东西。
这是供应数组,并调用递归函数的代码:
char encoded[512];
text_to_binary("Some text", encoded);
这是递归函数:
void text_to_binary(const char* str, char* encoded)
{
char bintemp[9];
bintemp[0] = '\0';
while(*str != '\0')
{
ascii_to_binary(*str, bintemp);
strcat(encoded, bintemp);
str++;
text_to_binary(str, encoded);
}
}
这是怎么回事?
ps。我无法使用std::string
- 我坚持使用char*
。
编辑:这是数组中的垃圾字符: ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ...
编码[0] ='\ 0'应该可以工作,你在调用text_to_binary之前是否做过这个? – 2010-01-07 16:07:55
“junk character”是十六进制的0xcc Debug build(在Visual C++下)使用此值初始化堆栈变量以帮助在调试时显示未初始化的变量用法ING。 – 2010-01-07 16:21:29