2
我在C語言培訓,我正在做一個程序,創建一個簡單的數組和排序他。 下面的代碼:運行時檢查失敗#2 - 圍繞變量「選項卡」堆棧已損壞
MAIN.C:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, int *argv[])
{
int tab[5]={2,5,3,9,4}, i=0, longueur=0;
/*for(i=0; i<5; i++)
{
tab[i] = i;
}*/
longueur = sizeof(tab)/sizeof(tab[0]);
trierTab(tab,longueur);
afficherTab(tab,longueur);
return 0;
Tableaux.c:
#include "tableaux.h"
//Sort the array
void trierTab(int tab[],int longueur)
{
int i=0, j=0,max=0,indiceMax=0,temp=0;
for(i=longueur-1; i>=1;i--)
{
for(j=0;j<=i;j++)
{
if(tab[j]>max)
{
max = tab[j];
indiceMax = j;
}
}
temp=tab[j];
tab[j]=max;
tab[indiceMax]=temp;
}
}
//Print the array
void afficherTab(int tab[], int longueur)
{
int i=0;
for(i=0;i<longueur;i++)
{
printf("| %d |",tab[i]);
}
}
我想,有一個出界的錯誤,但我可以」不知道她在哪裏:s 有人可以幫我嗎? ^^
邊界環路'用於之後的(j = 0;Ĵ<= I; J ++)'具有完成'j'的值爲'i + 1',然後用於'tab [j] = max'。但是'i'開始爲'i = longueur-1',所以'j'可以是'longueur',它超出了數組邊界。 – 2014-11-05 11:16:36
Omfg,我很笨x) 謝謝你:) – DoT 2014-11-05 11:24:41