2010-07-14 5 views
1

je tentais de faire un programme, mais, quand elle est sprintf à l'équation, je reçois l'erreur suivante:étrange erreur SIGABRT

Program received signal: "SIGABRT"

Mon sprintf est écrit comme suit:

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

Si vous devez voir le code tout ici est (mais vous ne probablement pas, mais juste au cas où):

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

Mais, le problème ne se produit que lorsque j'utilise sprintf. Notez également: je n'utilise pas itoa car mon compilateur ne le permet pas.

Toute aide serait appréciée!

Répondre

1

Dans le code réel que vous suppose que le tampon b est assez grand pour imprimer le résultat de i*g dans, mais vous n'initialize g avant sa première utilisation sur cette ligne:

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

Mais même si g a été initialisé , il vous manque que le tampon doit également contenir le caractère \0, donc il est trop petit.

+0

Je n'ai pas initialisé 'g' mais, même après avoir placé' sprintf' après la boucle for qui initialise 'g', il donne toujours la même erreur. –

+0

Oups J'ai écrit le top exemple faux. –

+0

Je le pensais. Notez le commentaire ajouté sur la taille de 'b'. –