erreur "abort trap" xcode

benj54

Membre confirmé
9 Juin 2011
24
0
Bonjour, voilà j'ai un programme en C où je souhaite concaténer une chaine de caractère, et mon problème c'est que lors de ma compilation j'ai une erreur "abort trap" que je n'arrive pas a résoudre, alors que lorsque je compile sous windows cela fonctionne correctement.

Voilà mon bout de code :

Bloc de code:
char ligne[256];  
    char* champ;
    int compteur_ligne = 0;
    int compteur_decoup = 0;
    int i = 0;
    char nomFichier[] = "Fichier/F";
    char numeroFichier[] = "a";
   
   sprintf(numeroFichier, "%d", i);
   printf("numFichier : %s\n", numeroFichier);
   strcat(nomFichier, numeroFichier);
        
   printf("nomFichier : %s\n", nomFichier);

Merci d'avance
 
Bloc de code:
char numeroFichier[] = "a";
2 octets sont réservés pour stocker les 1 caractère + 1 octet nul.

Bloc de code:
sprintf(numeroFichier, "%d", i);
Comme i vaut zéro, la chaîne stockée dans numeroFichier va mesurer 2 octets (1 caractère + 1 octet nul). Pour l'instant, c'est bon.

Bloc de code:
char nomFichier[] = "Fichier/F";
10 octets sont réservés pour stocker les 9 caractères + 1 octet nul.

Bloc de code:
strcat(nomFichier, numeroFichier);
Là, tu demandes de stocker la chaîne "Fichier/F0" qui mesure 11 octets alors que tu n'as réservé que 10 octets. Tu écrases la pile, donc ça plante !

Ça fonctionne sous Windows par chance uniquement.