itoa在C++中创建了一个无限循环

Gri*_*fin 0 c++ loops itoa infinite-loop

这很奇怪.itoa();似乎创造了一个无限循环.

for(int i = 0; i < 10; i++)
{
        char buffer[1];
        itoa(i, buffer, 10);
        std::cout << buffer;
}
Run Code Online (Sandbox Code Playgroud)

为什么它会这样做呢?我尝试使用不同的变量i,没有变量的数值(即itoa(1, buffer, 10);),它仍然在无限循环中结束.我试图谷歌没有太大的成功,我在这里找到了一个旧邮件.我使用Windows XP 32位和Code :: Blocks(带GCC)作为编译器.

有谁知道什么是错的?提前致谢.

ild*_*arn 5

itoanull - 终止它生成的字符串,但是你没有buffer足够大来保存终止NUL字符.尝试:

for (int i = 0; i < 10; i++)
{
    char buffer[2];
    itoa(i, buffer, 10);
    std::cout << buffer;
}
Run Code Online (Sandbox Code Playgroud)