堆栈变量" struc"已经腐败了

时间:2016-07-25 03:22:37

标签: c stack

所以我遇到了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;
};

2 个答案:

答案 0 :(得分:5)

更改Personne Joueur[2]; -> Personne Joueur[3];

你没有足够的内存来容纳2个以上的结构。

答案 1 :(得分:0)

您正在尝试将更多值添加到Joueur[2]而不是内存中。因此,没有足够的内存来容纳两个以上的值。

您正在超出分配的内存,并调用未定义的行为。因此,定义一个足够大的数组来保存值。因此,请根据 sas 回答更改数组值。