J'ai recherché cette erreur particulière et j'ai trouvé que le problème sous-jacent implique que le nombre de boucles est incorrect et que le programme dépasse ses limites pour le tableau. Cependant, après avoir abaissé chaque matrice au point où la matrice a commencé à perdre des données en sortie, elle a continué à émettre la même erreur. Je suis encore nouveau en C/C++ mais tout aperçu de ce serait grandement apprécié.STATUS_STACK_BUFFER_OVERRUN a rencontré
Le programme semble aller jusqu'au bout et revient même à la méthode principale.
#include <stdio.h>
void sortAr(char[]);
int main()
{
char a='y';
char b,i;
char c[20];
int x=0,n=0,z=0;
while (x<=19)
{
c[x]='@';
x++;
}
printf("Enter 20 letters: \n");
while (z<=20) //(The '=' caused my problem, removed and it runs fine.)
{
z++;
x=0;
b='y';
scanf("%c",&i);
while (x<=19)
{
if (c[x]==i)
b='n';
x++;
}
if (b=='y')
{
c[n]=i;
n++;
}
}
printf("\n");
printf("The nonduplicate values are: \n");
sortAr(c);
}
void sortAr(char ar[])
{
char z;
for (int i = 0; i <= 19; i++)
{
for (int j=i+1; j <= 19; ++j)
{
if (ar[i]>ar[j])
{
z = ar[i];
ar[i] = ar[j];
ar[j] = z;
}
}
}
for (int i = 0; i < 20; i++)
{
if(ar[i]=='@')
continue;
printf("%c ", ar[i]);
}
printf("\n");
}
Vous ne l'avez pas réinitialiser 'x' avant la 2ème utilisation. –
Ah oui, j'ai oublié de rajouter ça après avoir testé des pointeurs et des tableaux de caractères pour stocker des valeurs. Je suis allé de l'avant et enlevé le z = 20 suivant; while (x <= 19) { si (c [x] == '@') z--; x ++; } – Kal
Je vous recommande d'inspecter votre code avec un débogueur qui parcourt ligne par ligne. C'est probablement plus rapide que de l'afficher ici, et d'attendre que les autres le fassent pour vous. –