2016-07-25 1 views
0

Таким образом, я столкнулся с проблемой с Visual Studio 2013 Этот код не показывает ошибки компиляции, но ошибки отладкиСтек вокруг переменной «STRUC» поврежден

Stack вокруг переменной «Игрок Рейтинг» был поврежден.

Это код:

== 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];

Вам не хватает памяти для хранения более двух структур.

0

Вы пытаетесь сделать больше значений в Joueur[2] чем память. Таким образом, недостаточно памяти для хранения более двух значений.

Вы обнуляете выделенную память, и она вызывает неопределенное поведение. Итак, определите массив, достаточно большой для хранения значений. SO, измените значение вашего массива в соответствии с sas ответ.