1

プログラムを作成しようとしましたが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コンパイラが許可していないため、使用していません。

どんな助けでも大歓迎です!

4

1 に答える 1

2

b実際のコードでは、バッファーは結果を出力するのに十分な大きさであると想定していますが、この行で最初に使用する前にi*g初期化することはありません。g

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

ただし、g初期化されたとしても、バッファーも\0文字を保持する必要があることを見逃しているため、小さすぎます。

于 2010-07-14T19:17:51.833 に答える