Vous êtes sur la page 1sur 4

//

// main.c
// Kontakt
//
// Created by Baimi Badjoua on 09/02/2024.
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAILLE_LIGNE 128
#define TAILLE_CHAINE 30
#define BUFFER 90

typedef struct Contact Contact;


struct Contact
{
char nom[TAILLE_CHAINE];
char prenom[TAILLE_CHAINE];
char numero[TAILLE_CHAINE];
};

Contact *initContact()
{
// Initialiser les contacts
Contact *c = malloc(sizeof(*c));
if(c == NULL)
{
exit(EXIT_FAILURE); // On quiite
}
strcpy(c->nom, "Inconnu");
strcpy(c->prenom, "Inconnu");
strcpy(c->numero, "+23566443322");

return c;
}

void listerContacts(void)
{
// Lister les contacts
FILE* fic;
char ligne[TAILLE_LIGNE];
char *ptr_chaine ; // Pointeur pour balayer les sous-chaînes obtenues
short int num_ligne = 1 ;
char nom[TAILLE_CHAINE];
char prenom[TAILLE_CHAINE];
char numero[TAILLE_CHAINE];
//----------------- Ouverture du fichier de données CSV --------------------
fic = fopen("/Users/baimi/coding/c/Kontakt/Kontakt/kontakts.csv", "rt") ;
if (fic == NULL)
{
printf("Ouverture du fichier impossible !");
exit(EXIT_FAILURE);
}
//------------------ Lecture du fichier de données CSV ---------------------
// On lit une ligne après l'autre jusqu'à la fin du fichier
while(fgets( ligne, TAILLE_LIGNE, fic) != NULL)
{
printf("\n Contact %2hd :", num_ligne );
num_ligne++ ;
ptr_chaine = strtok (ligne, ";"); // Appel d'initialisation de strtok. Séparateur = ';'
/* On lit une cellule (colonne) après l'autre jusqu'à la fin de la ligne. Notez que si les
cellules contenaient des données de même type, on pourrait écrire une boucle
while(ptr_chaine!=NULL){} */
// Cellule 1 :
if (sscanf(ptr_chaine,"%s", nom) != 1) // Verif. de la validité des données
{
puts("\nProbleme de lecture cellule 1 (chaine) !");
nom[0] = 0;
}
ptr_chaine = strtok (NULL, ";"); // Remplace le prochain séparateur trouvé par 0,
// Puis renvoie l'adresse de la chaîne ainsi obtenue. Séparateur = ';'
// Cellule 2 :
if (sscanf(ptr_chaine,"%s", prenom) != 1)
{
puts("\nProbleme de lecture cellule 2 (chaine)!");
prenom[0] = 0;
}
ptr_chaine = strtok (NULL, ";"); // Remplace le prochain séparateur trouvé par 0
// cellule 3 :
if (sscanf(ptr_chaine,"%s", numero) != 1)
{
puts("\nProbleme de lecture cellule 3 (reel)!");
numero[0] = 0;
}
ptr_chaine = strtok (NULL, ";"); // Non indispensable ici
// affichages :
printf("\n\t NOM : %s ", nom) ;
printf("\n\t PRÉNOMS : %s", prenom);
printf("\n\t NUMÉRO : %s", numero);
}
fclose(fic);
}

void ajouterContact(Contact *c)


{
// Ajouter un contact
if(c == NULL)
{
exit(EXIT_FAILURE); // On quiite
}
FILE* fichier;
//----------------- Ouverture du fichier de données CSV --------------------
fichier = fopen("/Users/baimi/coding/c/Kontakt/Kontakt/kontakts.csv", "a") ;
if (fichier == NULL)
{
printf("Ouverture du fichier impossible !");
exit(EXIT_FAILURE);
}
char texte[BUFFER] = "";

printf("Nom du contact : ");


scanf("%s", c->nom);
printf("Prenom du contact : ");
scanf("%s", c->prenom);
printf("Numero du contact : ");
scanf("%s", c->numero);
strcat(c->nom, "; ");
strcat(c->prenom, "; ");
strcat(c->numero, ";");

strcat(texte, c->nom);
strcat(texte, c->prenom);
strcat(texte, c->numero);

fputs(texte, fichier);
fputs("\n", fichier);

printf("Contact ajouté\n");

fclose(fichier);
}

void modifierContact(Contact *c)


{
// Ajouter un contact
if(c == NULL)
{
exit(EXIT_FAILURE); // On quiite
}
}

void supprimerContact(Contact *c)


{
// Ajouter un contact
if(c == NULL)
{
exit(EXIT_FAILURE); // On quiite
}
}

int main(int argc, const char * argv[]) {


// insert code here...
printf("===BIENVENUE SUR KONTAKTS===\n");
int choix1 = 0;
int choix2 = 0;
Contact *monContact = initContact();
do{
printf("1. Lister les contacts\n");
printf("2. Ajouter un contact\n");
printf("3. Modifier un contact\n");
printf("4. Supprimer un contact\n");
printf("5. Afficher un contact\n");
scanf("%d", &choix1);
switch(choix1){
case 1:
{
printf("\nListe des contacts\n");
listerContacts();
printf("\n");
break;
}
case 2:
{
printf("\nAjout d'un contact\n");
ajouterContact(monContact);
break;
}
case 3:
{
printf("\nModification d'un contact\n");
break;
}
case 4:
{
printf("\nSuppression d'un contact\n");
break;
}
case 5:
{
printf("\nDétails d'un contact\n");
break;
}
default:
{
printf("\nChoix incorrect\t[1..5]\n");
}
}
printf("\nVoulez-vous continuer ? (1. Oui, 0. Non) : ");
scanf("%d", &choix2);
}while(choix2 == 1);
printf("\nMerci d'avoir testé KONTAKTS\n");
return 0;
}

Vous aimerez peut-être aussi