在c中保持结构中的相同变量

时间:2018-05-16 17:21:27

标签: c structure

在我的主要功能中,我扫描文件的信息并将所有信息放入全局结构中。但是,每当我转到另一个函数并声明我的结构时,我放入其中的所有信息都会消失。我想知道如何使我放入结构中的所有值在每个函数中保持不变。 结构:

struct joueursstruct
{
int numero;
char equipe[4];
char prenom[50];
char nom[50];
int buts;
int assist;
int penal;
int points;
}joueurs2[50];

扫描文件的主要部分

for(indice1 = 0;indice1 < 50;indice1++)
{
    fscanf(fptr,"%d",&joueurs2[indice1].numero);
    fscanf(fptr,"%c",&buffer);
    fscanf(fptr,"%[^ ]s",&joueurs2[indice1].equipe);
    fscanf(fptr,"%c",&buffer);
    fscanf(fptr,"%[^ ]s",&joueurs2[indice1].prenom);
    fscanf(fptr,"%c",&buffer);
    fscanf(fptr,"%[^ ]s",&joueurs2[indice1].nom);
    fscanf(fptr,"%d",&joueurs2[indice1].buts);
    fscanf(fptr,"%c",&buffer);
    fscanf(fptr,"%d",&joueurs2[indice1].assist);
    fscanf(fptr,"%c",&buffer);
    fscanf(fptr,"%d",&joueurs2[indice1].penal);
    joueurs2[indice1].points = joueurs2[indice1].buts + 
    joueurs2[indice1].assist;
}

应该在屏幕上打印玩家姓名和目标的其他功能的一部分:

{
 printf("%d\t %s\t %s\t %s %d\t %d\t %d\t %d\n", 
 joueurs2[indice1].numero,joueurs2[indice1].equipe,joueurs2[indice1].prenom
 ,joueurs2[indice1].nom,joueurs2[indice1].buts,joueurs2[indice1].assist,
 joueurs2[indice1].penal,joueurs2[indice1].points);
}

但它所做的只是打印0。

1 个答案:

答案 0 :(得分:0)

您是否在函数中声明了一个同名的变量?然后它创建一个本地对象,其名称将影响全局对象。从函数中删除该声明并查看效果。如果您的编译器然后抱怨未定义的标识符,那么在函数之前放置该全局变量声明