Académique Documents
Professionnel Documents
Culture Documents
// 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
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);
}
strcat(texte, c->nom);
strcat(texte, c->prenom);
strcat(texte, c->numero);
fputs(texte, fichier);
fputs("\n", fichier);
printf("Contact ajouté\n");
fclose(fichier);
}