Tuto C - #13 Les structures

PrimFX Boris ('PrimFX') Le 16 octobre 2019

Besoin de stocker davantage d'informations dans une variable ? Découvrons les structures qui nous permettent de faire ça en C !

Code du tuto :

#include <stdio.h>
#include <string.h>

typedef struct {
	char titre[100];
	char auteur[100];
	int annee;
} Livre;

void afficherLivre(Livre livre) {
	printf("============\n");
	printf("Titre : %s\n", livre.titre);
	printf("Auteur : %s\n", livre.auteur);
	printf("Annee : %d\n", livre.annee);
	printf("============\n");
}

int main() {
	// Livre livre1;
	// Livre livre2;
	Livre bibliotheque[100];
	int nbLivres = 0;
	int i;

	bibliotheque[0].annee = 1997;
	// livre1.titre = "Harry Potter";
	strcpy(bibliotheque[0].titre, "Harry Potter");
	strcpy(bibliotheque[0].auteur, "JK Rowling");
	nbLivres++;

	bibliotheque[1].annee = 1943;
	strcpy(bibliotheque[1].titre, "Le Petit Prince");
	strcpy(bibliotheque[1].auteur, "Antoine de Saint-Exupéry");
	nbLivres++;

	// afficherLivre(livre1);
	// afficherLivre(livre2);

	for (i = 0; i < nbLivres; i++)
		afficherLivre(bibliotheque[i]);

	return 0;
}

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 22 ans et je suis passionné d'informatique. Suite à mes études (Licence Informatique puis MSc Computer Science au Trinity College Dublin), je gère l'entreprise Single Quote co-fondée en 2019 et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 4

  • david13800 Le 9 décembre, à 14:32 | Répondre

    Le code complet :
    #include



    typedef struct {
    char titre[100];
    char auteur[100];
    int annee;

    } Livre;

    void afficherLivre(Livre livre){

    printf("=========================\n");
    printf("Titre : %s\n", livre.titre);
    printf("Auteur : %s\n", livre.auteur);
    printf("Annee : %d\n", livre.annee);

    }

    int main() {

    Livre Bibliotheque[100];
    int nbLivres = 0;
    int i;
    char quit = 'c';

    while (quit == 'c') {


    printf("Saisir le titre du livre : \n");
    scanf("%s", Bibliotheque[nbLivres].titre);

    printf("Saisir l'annee du livre : \n");
    scanf("%d", &Bibliotheque[nbLivres].annee);

    printf("Saisir l'auteur du livre : \n");
    scanf("%s", Bibliotheque[nbLivres].auteur);

    nbLivres++;

    rewind(stdin);
    printf("Voulez-vous continuer ? Tapez (c) pour continuer ou (q) pour quitter :\n");
    scanf("%c", &quit);



    };

    for (i = 0 ; i < nbLivres; i++) {

    afficherLivre(Bibliotheque[i]);

    };



    return 0;
    }

  • david13800 Le 9 décembre, à 14:32 | Répondre

    Je viens de trouver la solution : j'ai vider le buffer avec rewind(stdin); et j'ai modifier cela
    printf("Voulez-vous continuer ? Tapez (c) pour continuer ou (q) pour quitter :\n");
    scanf("%c", &quit);

  • david13800 Le 9 décembre, à 14:10 | Répondre

  • david13800 Le 9 décembre, à 13:32 | Répondre

    Bonjour, j'ai repris votre programme de la bibliothèque en intégrant l'interaction avec un utilisateur.
    Je ne comprends pas pourquoi mon programme ne m'affiche pas le premier titre alors que les autres titres sont affichés ???
    Ci-dessous le script du programme :

    #include




    typedef struct {
    char titre[100];
    char auteur[100];
    int annee;

    } Livre;

    void afficherLivre(Livre livre){

    printf("=========================\n");
    printf("Titre : %s\n", livre.titre);
    printf("Auteur : %s\n", livre.auteur);
    printf("Annee : %d\n", livre.annee);

    }

    int main() {

    Livre Bibliotheque[100];
    int nbLivres = 0;
    int i;
    char quit = 'c';

    while (quit == 'c') {

    printf("Saisir l'annee du livre : \n");
    scanf("%d", &Bibliotheque[nbLivres].annee);
    printf("Saisir le titre du livre : \n");
    scanf("%s", Bibliotheque[nbLivres].titre);
    printf("Saisir l'auteur du livre : \n");
    scanf("%s", Bibliotheque[nbLivres].auteur);

    nbLivres++;

    printf("Voulez-vous continuer ? Tapez (c) pour continuer ou (q) pour quitter :\n");
    scanf("%s", &quit);



    };

    for (i = 0 ; i < nbLivres; i++) {

    afficherLivre(Bibliotheque[i]);

    };

    return 0;
    }