Home > Software engineering >  Initialize values in array of structure in C
Initialize values in array of structure in C

Time:11-30

I want to create a function to initialize values of structure like that :

// main.c
#include <stdio.h>
#include <stdlib.h>
#include "main.h"

int main(int argc, char *argv[]){
    int i, taille = 2, cmpt = 0;
    Personne joueur[2];

    for(i = 0; i < taille; i  ){
        initialiserJoueur(&joueur[i]);
    }

    printf("\n%s %s : %d\n", joueur[0].nom,joueur[0].prenom, joueur[0].age);

    return 0;
}

void initialiserJoueur(Personne *joueur){
    joueur->age = 0;
    joueur->nom = "";
    joueur->prenom = "";
}
// main.h
typedef struct Personne Personne;

struct Personne {
    int age;
    char nom[100];
    char prenom[100];
};

void initialiserJoueur(Personne *joueur);

in function "initialiserJoueur", the fields "nom" and "prenom" won't initialize and are red underline, an idea ?

CodePudding user response:

Arrays can't be assigned to directly. You need to use strcpy to write to one:

joueur->nom = strcpy("");
joueur->prenom = strcpy("");

Or even simpler, since you're setting all fields to 0, just initialize the array that way:

Personne joueur[2] = { { 0 } };
  • Related