使用的sprintf输出的额外字符串,如“%×......”的sprintf输出的额外字符串
int main()
{
char *word_tmp = new char[0];
char *word_all = new char[0];
for(int i=0;i<5;i++)
{
sprintf(word_tmp, "\nNumber:%d, Good Good!", i);
sprintf(word_all, "%s%s", word_all, word_tmp);
}
std::cout<<word_all;
}
该项目工程的权利,但输出字符串我没有输出。
很可能他不想要这样的事情。例如,幻数256是什么意思?例如,该程序仍然充满未定义的行为:违反'sprintf'参数上的'restrict'。 (更不用说所有违反良好编码习惯的情况:例如,使用'memset',例如,简单的初始化就可以实现;使用'sprintf';使用'char []'时'std :: string'会更合适,等等等等) –
@JamesKanze:是的,我同意。我只是不想完全改变OP的程序,因为这不会回答他的问题(“什么导致了我的程序的怪异行为?”)。所以我基本上试图“说出他的语言”来找到一个共同点,可能我没有正确地做到这一点。当然我同意使用'std :: string'更好,但是这会使得不可能使用'sprintf'。很好,我可以显示'std :: stringstream'等,但OP可能需要先到达那里。 –