gpt4 book ai didi

c - 奇怪的 SIGABRT 错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:07:26 24 4
gpt4 key购买 nike

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

Program received signal: "SIGABRT"

我的sprintf是这样写的:

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);
}

但是,问题只在我使用 sprintf 时发生。另请注意:我没有使用 itoa,因为我的编译器不允许。

如有任何帮助,我们将不胜感激!

最佳答案

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

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

但是即使初始化了 g,您也没有注意到缓冲区还必须保存 \0 字符,因此它太小了。

关于c - 奇怪的 SIGABRT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com