Fonction pour charger des données
Résolu/Fermé
SIM54
Messages postés
3
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
13 avril 2008
-
13 avril 2008 à 08:27
SIM54 Messages postés 3 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 13 avril 2008 - 13 avril 2008 à 11:26
SIM54 Messages postés 3 Date d'inscription dimanche 13 avril 2008 Statut Membre Dernière intervention 13 avril 2008 - 13 avril 2008 à 11:26
A voir également:
- Fonction pour charger des données
- Fonction si et - Guide
- Trier des données excel - Guide
- Supprimer les données de navigation - Guide
- Excel validation des données liste - Guide
- Fonction moyenne excel - Guide
4 réponses
tatou_38
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
121
13 avril 2008 à 09:25
13 avril 2008 à 09:25
Si ce code est ton programme de sauvegarde, tu as de quoi t'inquiéter car tes sauvegardes ne doivent pas contenir grand chose !
==> Tu ne lis aucunes données dans le fichier ouvert en lecture ( au passage : "r+t")
==> Tu écris une seule ligne, issue de buffer
Pour la restauration, il faut faire la même chose, en sens inverse !
==> Tu ne lis aucunes données dans le fichier ouvert en lecture ( au passage : "r+t")
==> Tu écris une seule ligne, issue de buffer
Pour la restauration, il faut faire la même chose, en sens inverse !
SIM54
Messages postés
3
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
13 avril 2008
13 avril 2008 à 09:42
13 avril 2008 à 09:42
J'aurais espérer un peu de code C, mais c'est pas grave et encore merci pour l'astuce !
vignemail1
Messages postés
1246
Date d'inscription
vendredi 8 octobre 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
259
13 avril 2008 à 10:41
13 avril 2008 à 10:41
Bon, je t'ai fais rapidement un lecteur de fichier qui contient des lignes du style clé=valeur
en espérant que cela t'aide, j'ai utilisé une liste chainée pour le fun.
Je n'ai pas vraiment testé, c'est un code purement théorique mais le principe est bon.
#include <string.h> #include <stdio.h> #include <stdlib.h> typedef struct Couple{ char *key; char *value; struct Couple *next; }Couple; int readFile(char* filename, Couple **tableau){ FILE *fpr; char ligne[512]; char *key; char *value; Couple* element, **debut; char *c; debut = (Couple**)malloc(sizeof(Couple*)); fpr = fopen(filename,"r"); if(!fpr) { fprintf(stderr,"impossible de lire [%s]\n",strdup(filename)); return 2; } while(!feof(fpr)){ fgets(ligne, sizeof(ligne), fpr); /* on gère ainsi les lignes vides de séparation au besoin */ if (strlen(ligne)>1){ /* On récup. les données de la forme key=value stocké par couple ligne par ligne */ key = strtok(ligne, "="); value = strtok(NULL, "\r\n\0"); if (key != NULL && value != NULL){ /* on défile la liste chainée jusqu'à la fin */ while( ((*tableau) != NULL) && ((*tableau)->next != NULL) ){ *tableau = (*tableau)->next; } /* On crée un nouveau couple */ element = (Couple*)malloc(sizeof(Couple)); /* on y associe les valeurs trouvées */ element->key = strdup(key); element->value = strdup(value); /* on ajoute l'element */ if (*tableau == NULL){ *tableau = element; *debut = element; }else{ (*tableau)->next = element; } /* On déplace le pointeur du tableau sur le nouvel element */ *tableau = element; } } } fclose(fpr); /* on récup. le début du tableau avant de sortir */ *tableau = *debut; return 1; } int main(int argc, char **argv){ Couple *tableau = NULL; if (!readFile(argv[1], &tableau)){ printf("Lecture incorrecte\n"); return 1; } printf("Lecture correcte\n"); if (tableau == NULL){ printf("Tableau de taille nulle\n"); } while (tableau != NULL){ printf("Clé=%s \t valeur=%s\n", (tableau)->key, (tableau)->value); tableau = tableau->next; } return 0; }
en espérant que cela t'aide, j'ai utilisé une liste chainée pour le fun.
Je n'ai pas vraiment testé, c'est un code purement théorique mais le principe est bon.
SIM54
Messages postés
3
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
13 avril 2008
13 avril 2008 à 11:26
13 avril 2008 à 11:26
Merci encore de l'aide!