首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇异SIGABRT误差

奇异SIGABRT误差
EN

Stack Overflow用户
提问于 2010-07-14 19:15:33
回答 1查看 1.8K关注 0票数 1

我试图编写一个程序,但是,当将sprintf添加到等式中时,我会得到以下错误:

程序接收信号:"SIGABRT“

我的sprintf编写如下:

代码语言:javascript
复制
int i;
int g;
char b[6];
sprintf(b, "%d", i*g);

如果您需要查看这里的全部代码(但您可能没有看到,以防万一):

代码语言:javascript
复制
#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);
}

但是,这个问题只在我使用sprintf时才会发生。还要注意:我没有使用itoa,因为我的编译器不允许它。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-14 19:17:51

在实际代码中,假设缓冲区b足够大,足以将i*g的结果打印到其中,但在第一次使用g之前从未在该行上初始化过g

代码语言:javascript
复制
sprintf(b, "%d", i*g);

但是,即使初始化了g,缓冲区也必须保留\0字符,因此它太小了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3249617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档