代码之家  ›  专栏  ›  技术社区  ›  thyrgle

奇怪的信号错误

  •  1
  • thyrgle  · 技术社区  · 14 年前

    我想做一个程序,但是 sprintf 对于方程,我得到以下误差:

    节目接收信号:“SIGABRT”

    把格式数据写成串

    int i;
    int g;
    char b[6];
    sprintf(b, "%d", i*g);
    

    如果您需要在这里查看整个代码(但您可能不需要,以防万一):

    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main (int argc, const char * argv[]) {
        int i;
        int g;
        char b[6];
        char temp[6];
        char c[6];
        int lol;
        int revlol;
        int assign;
        for (i = 100; i < 1000; i++)
        {
            sprintf(b, "%d", i*g);
            for (g = 100; g < 1000; g++)
            {
                for (lol = 5; lol > -1; lol--)
                {
                    for (revlol = 0; revlol < 6; revlol++)
                    {
                        temp[lol] = b[revlol];
                    }
                    if (temp == b)
                    {
                        for (assign = 0; assign < 6; assign++)
                        {
                            c[assign] = b[assign];
                        }
                    }
                }
            }
        }
        printf("%s", c);
    }
    

    但是,问题只发生在我使用 把格式数据写成串 . 另请注意:我没有使用 itoa

    任何帮助都将不胜感激!

    1 回复  |  直到 14 年前
        1
  •  2
  •   Georg Fritzsche    14 年前

    b 大到可以打印结果 i*g 但你从不初始化 g 在首次用于本生产线上之前:

    sprintf(b, "%d", i*g);
    

    但即使 如果已初始化,则缺少缓冲区还必须保存 \0 所以它太小了。