aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/structures des données/tme
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-10-10 23:15:18 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2025-10-10 23:15:18 +0200
commit4ed8060318b1807638c12b8b43660bb98fc99fba (patch)
tree976f9b6be6cfbb72c3c908e2e1e60069f5a4296a /semestre 3/structures des données/tme
parent85fbaa4d9381e435be129aa7bc4ea6a472acb2b2 (diff)
Cours du 6 au 10 octobre
Diffstat (limited to 'semestre 3/structures des données/tme')
-rw-r--r--semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c19
-rw-r--r--semestre 3/structures des données/tme/tme3-5/exo1/main.c32
2 files changed, 23 insertions, 28 deletions
diff --git a/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c b/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
index 3adb7fb..178b7a8 100644
--- a/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
+++ b/semestre 3/structures des données/tme/tme3-5/exo1/entreeSortieLC.c
@@ -12,20 +12,11 @@ Biblio* charger_n_entrees(char* nomfic, int n){
char* tmp = fgets(content, 256, f);
if (!tmp) return NULL;
- char* parsed[3];
- char c[256];
- int k = 0;
- int l = 0;
- for (int j = 0; j < 256 && content[j] != '\0'; j++){
- if (content[j] == ' '){
- c[k] = '\0';
- parsed[l++] = strdup(c);
- k = 0;
- } else {
- c[k++] = content[j];
- }
- }
- inserer_en_tete(bib, atoi(parsed[0]), parsed[1], parsed[2]);
+ int num;
+ char title[256];
+ char author[256];
+ if (sscanf(content, "%d %s %s", &num, &title, &author) != 3) return NULL;
+ inserer_en_tete(bib, num, title, author);
}
if (fclose(f) != 0) return NULL;
return bib;
diff --git a/semestre 3/structures des données/tme/tme3-5/exo1/main.c b/semestre 3/structures des données/tme/tme3-5/exo1/main.c
index f1e85c0..b38104a 100644
--- a/semestre 3/structures des données/tme/tme3-5/exo1/main.c
+++ b/semestre 3/structures des données/tme/tme3-5/exo1/main.c
@@ -27,13 +27,13 @@ int main(int argc, char** argv){
int rep;
do {
menu();
- char s[2];
- char* r = fgets(s, 2, stdin);
- if (!r) {
+ char s[3];
+ char* r = fgets(s, 3, stdin);
+ if (!r){
printf("erreur lors de la lecture :(\n");
return 3;
}
- s[1] = '\0';
+ s[1] = '\0'; // skipping \n char
rep = atoi(s);
printf("\n");
switch(rep){
@@ -42,17 +42,21 @@ int main(int argc, char** argv){
afficher_biblio(bib);
break;
case 2:
- int num;
- char titre[256];
- char auteur[256];
printf("Veuillez ecrire le numero, le titre et l' auteur de l' ouvrage. \n");
- /* On suppose que le titre et l’auteur ne contiennent pas d’espace*/
- if (scanf("%d %s %s", &num, titre, auteur) == 3){
- inserer_en_tete(bib, num, titre, auteur);
- printf("Ajout fait.\n");
- } else {
- printf("Erreur format\n");
+ char input[256];
+ char* s = fgets(input, 256, stdin);
+ if (!s){
+ printf("Entrée invalide.");
+ break;
+ }
+ int num;
+ char title[256];
+ char author[256];
+ if (sscanf(input, "%d %s %s", &num, &title, &author) != 3){
+ printf("Entrée invalide.");
+ break;
}
+ inserer_en_tete(bib, num, title, author);
break;
case 3:
Biblio* db = rechercher_doublons(bib);
@@ -61,6 +65,6 @@ int main(int argc, char** argv){
}
printf("\n");
} while (rep != 0);
- printf ("Merci, et au revoir.\n");
+ printf("Merci, et au revoir.\n");
return 0;
}