在c中的结构中保留相同的变量
Keeping the same variables in a structure in c
在我的主函数中,我扫描了一个文件的信息,并将所有信息放入一个全局结构中。然而,每当我转到另一个函数并声明我的结构时,我放入其中的所有信息都会消失。我想知道如何使我放入结构中的所有值在每个函数中都保持不变。
结构:
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。
您是否在函数中声明了同名变量?然后它创建了一个局部对象,它的名字覆盖了全局对象。从函数中删除该声明并查看效果。如果您的编译器然后抱怨未定义的标识符,则将全局变量声明 放在函数 之前。
在我的主函数中,我扫描了一个文件的信息,并将所有信息放入一个全局结构中。然而,每当我转到另一个函数并声明我的结构时,我放入其中的所有信息都会消失。我想知道如何使我放入结构中的所有值在每个函数中都保持不变。 结构:
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。
您是否在函数中声明了同名变量?然后它创建了一个局部对象,它的名字覆盖了全局对象。从函数中删除该声明并查看效果。如果您的编译器然后抱怨未定义的标识符,则将全局变量声明 放在函数 之前。