begin process at 2012 05 30 06:28:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Fichier & Disque

 > 

recuperer des données dans un fichiers.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

recuperer des données dans un fichiers.

vendredi 9 mars 2007 à 18:13:56 | recuperer des données dans un fichiers.

volkukan

Salut, je compile ce petit programme et tout fonctionne bien a part que j'ai un probleme de segmentation donc de pointeur.
Y a til une ame généreuse capable de m'expliquer comment récuperer des données dans un fichiers et les mettres dans un tableau (de pointeur).

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

FILE *File;
int c,i;
char**  liste; //tableau 2 dimension??

int main(void){
    File=fopen("data/data.txt","r");
    c=0;
    
    while(!feof(File)) {
        fscanf(File,"%s\n",*liste);
            c++;    
    }
    for(i=0;i<7;i++) {
        printf("%s\n",*liste);        
    }
    
    fclose(File);
    return 0;
}

Merci d'avance
vendredi 9 mars 2007 à 19:54:53 | Re : recuperer des données dans un fichiers.

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
liste = pointeur non initialisé

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 9 mars 2007 à 20:36:33 | Re : recuperer des données dans un fichiers.

volkukan

OK mais je t'avoue que je capte rien; j'aimerais crées un programme qui recupere les données de façons dynamique sans  reserver de la mémoire initialement.

Je dois donc utiliser un peu de malloc mais je suis perdue sur la façon de proceder.

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

FILE *File;
int c,i;
char** liste;

int main(void){
    File=fopen("data/passe.txt","r");
    c=0;
    liste=(char **)malloc(15*sizeof(char*));
       
    while(!feof(File)) {
        fscanf(File,"%s",liste[c]);
            c++;   
    }
    for(i=0;i<7;i++) {
        printf("%s\n",liste[i]);       
    }
   
    fclose(File);
    free(liste);
    return 0;
}

On dit que c'est un passage obliger pour bien maîtriser le c que de se prendre la tête la dessus. J'imagine bien qu'ici des mecs connaissent la reponses.  Ou pourrait me guider.
Merci d'avance.

vendredi 9 mars 2007 à 20:54:33 | Re : recuperer des données dans un fichiers.

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
C'est mieux, mais maintenant c'est liste[c] qui n'est pas initialisé (t'a un tableau de pointeurs non initialisés pour le moment)

    liste=(char **)malloc(15*sizeof(char*));
       
    while(!feof(File) && c < 15) {
        liste[c] = ...;
        fscanf(File,"%s",liste[c]);
            c++;   
    }

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 9 mars 2007 à 21:44:58 | Re : recuperer des données dans un fichiers.

volkukan

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

FILE *File;
int c,i;
char** liste;

int main(void){
    File=fopen("data/present.txt","r");
    c=0;
    liste=(char **)malloc(15*sizeof(char));
    
        
    while(!feof(File)) {
        liste[c]=(char*)malloc(sizeof(char));
        fscanf(File,"%s",liste[c]);
            c++;    
    }
    for(i=0;i<6;i++) {
        printf("%s\n",liste[i]);        
    }
    
    fclose(File);
    free(liste);
    return 0;
}
Sa marche!!!!!!!!
mais je comprends pas pourquois? En effet, liste[c]=(char*)malloc(sizeof(char)); signifie que j'ai allouer quoi?? de la memoire pour fscanf ou est-ce juste une ligne de mon tableau. Le faite que liste[c] est la mémoire d'un octet m'invite a croire que c pas la dedans que fscanf va enregistrer son contenus
ou peut etre il ne fait que lui donner une adresse. Sa s'eclairecie doucement
vendredi 9 mars 2007 à 22:19:15 | Re : recuperer des données dans un fichiers.

volkukan

final....
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stddef.h>

FILE *File;
int c,i;
char** liste;

int main(void){
    File=fopen("data/present.txt","r");
    c=0;
    liste=(char **)malloc(15*sizeof(char));
   
       
    while(!feof(File)) {
        liste[c]=(char*)malloc(sizeof(char*));
        fscanf(File,"%s",liste[c]);
            c++;}
           
    for(i=0;i<c;i++) {
        printf("%s\n",liste[i]);
        free(liste [i]);}
   
    fclose(File);
    free(liste);
    return 0;
}

Merci vecchio56
samedi 10 mars 2007 à 00:39:19 | Re : recuperer des données dans un fichiers.

vecchio56

Administrateur CodeS-SourceS
liste[c]=(char*)malloc(sizeof(char*));

Tu ne réserve qu'un octet, logiquement faut réserver plus (la taille maximal d'une ligne)

_____________________________________
Un éditeur de ressources gratuit pour Windows

dimanche 11 mars 2007 à 00:23:31 | Re : recuperer des données dans un fichiers.

SAKingdom

Membre Club
Je dirais plutôt 4 octets (sizeof(char*) <- pointeur)

J'avais fais un snippet qui permettait d'allouer rapidement de la mémoire pour un pointeur de pointeurs. Voici l'adresse si ça t'interesse:
http://www.codyx.org/snippet_allocateur-pointeur-pointeurs_293.aspx

C++ (@++)

dimanche 11 mars 2007 à 00:53:57 | Re : recuperer des données dans un fichiers.

vecchio56

Administrateur CodeS-SourceS
Oups la boulette, j'avais pas vu le *

_____________________________________
Un éditeur de ressources gratuit pour Windows



Cette discussion est classée dans : données, file, liste, fichiers, include


Répondre à ce message

Sujets en rapport avec ce message

Descriptif des fichiers INCLUDE [ par manu ] Bonjour, je cherche qqun qui puisse me lister la liste des fichier h d'include et a quoi ils servent ?Tel que :// Fichiers à inclure#include // pour c koi les fichiers h? [ par etmerde ] je suis débutant(mais alors là, plus nul que ça tu trouves pas), et j'ai vu dans les codes c++ des trucs du genre include (machinchose.h) ou un truc d Petit probleme de code en C sur Linux !! [ par UncleShu ] Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM [C/C++] - déclarations de fichiers .h [ par smashcfr ] Hello j'essaie de me remettre au C (sur builder), et je commence simple, en faisant des progs console. Même si je fais un tout petit prog, je le fais Pb pour enumerer un repertoire [ par salley ] Voila, j'essaie de faire un bout de code qui me permet : -D'enumerer les fichiers de deux repertoire different (ca ca marche), -Et ensuite mettre le n aide include [ par Dalamar ] Je travaille sur un petit jeu et j,ai plusieurs fichiers .h. Je suis obligé d'en inclure plusieurs dans les autres fichiers, bref, chaque fichier dépe Problème de lecture [ par Hades53 ] Voila, j'ai fait un code pour lire des fichiers qui marche, mais il y a un petit problème avec la dernière ligne du fichier qu'on veut lire:si la dern Besoin de fichiers "*.h" [ par AxeL364 ] Bonjour,J'ai besoin des fichiers suivants :#include #include #include #include #include #include #include <netdb.h prototype de fonction [ par loupin ] D'abord bonjour a tous. Je debute en c tant bien que mal, mais j'ai un tout petit souci qui n'en ai pas un mais j'aimerais comprendre. Alors voici le Lecture de la liste des fichiers d'un répertoire distant [ par alain34270 ] Bonjour,Je cherche un moyen d'obtenir la liste des fichiers d'un répertoire distant, ainsi que leurs attributs, connaisant l'URL du répertoire. Je sai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,526 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales