我试图编写一个程序,但是,当将sprintf添加到等式中时,我会得到以下错误:
程序接收信号:"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,因为我的编译器不允许它。
任何帮助都将不胜感激!
发布于 2010-07-14 19:17:51
在实际代码中,假设缓冲区b足够大,足以将i*g的结果打印到其中,但在第一次使用g之前从未在该行上初始化过g:
sprintf(b, "%d", i*g);但是,即使初始化了g,缓冲区也必须保留\0字符,因此它太小了。
https://stackoverflow.com/questions/3249617
复制相似问题