2016-07-25 161 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回答改变你的数组值。