2016-07-25 213 views
0

所以我面臨的一個問題與Visual Studio 2013 這段代碼顯示沒有編譯錯誤,但調試錯誤周圍的變量「Joueur」堆棧損壞

堆棧已損壞。

這是代碼:

== Source.cpp

#include <stdlib.h> 
#include <stdio.h> 
#include "Header.h" 

int main() 
{ 
    Personne Joueur[2]; 
    printf("***** Bienvenue ***** \n \n \n"); 
    int k ; 
    for (k = 0; k < 3; k++) 
    { 
     printf("Bonjour Joueur %d :\n", k+1); 
     printf("Nom: "); 
     fgets(Joueur[k].Nom,50,stdin); 
     printf("Votre nom est: %s", &Joueur[k].Nom); 
     printf("\n \n"); 
    } 
    return 0; 
} 

== Header.h

typedef struct Personne Personne; 
struct Personne 
{ 
    char Nom[1500]; 
    char Prenom[1500]; 
    int Age; 
    int Tel; 
    double Moy; 
}; 
+1

'Personne Joueur [2]; (k = 0; k <3; k ++)' - >'Personne Joueur [3]; ... ; – chux

回答

5

變化Personne Joueur[2]; -> Personne Joueur[3];

你沒有足夠的內存容納2個以上的結構。

0

您正試圖將更多的值存儲到內存中的Joueur[2]。所以,沒有足夠的內存來保存更多的兩個值。

您超出了分配的內存,它調用未定義的行爲。所以,定義一個足夠大的數組來保存這些值。所以,根據sas回答改變你的數組值。