IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

lecture automatique de fichier


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut lecture automatique de fichier
    bonjour

    j'ai fait un petit code qui permet de lire une matrice à partir d'un fichier texte

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    void lire_coor(char chemin[100],float output_coor[84][5])
    {
    	FILE *ReadInput;
    	int x ;
     
    	ReadInput = fopen (chemin, "r" ) ;
     
    	if(ReadInput == NULL)
    	{
    	printf("Le fichier des coordonnées NARR n'existe pas");
    	} 
     
    	else
    	{
     
    	for (x=0;x<=83;x++)
    	{        	
     
    	fscanf (ReadInput, "%f %f %f %f %f\n",&output_coor[x][0],&output_coor[x][1],&output_coor[x][2],&output_coor[x][3],&output_coor[x][4]); 
     
         	}   
     
     
     
    	fclose (ReadInput) ; 
    	}
     
     
     
    }
    le truc c'est que je dois modifier ce programme pour que dorénavant il peut lire une matrice sans connaître au préalable la taille de la matrice , donc je veux modifier de telle façon qu'il peut calculer automatiquement le nombre de ligne et de colonne
    j'ai essayé plein de méthode avec for et while et j'avoue que je suis un peu perdu

    kk1 peut m'aider ??

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Bonjour Shmeta,

    Pour retrouver la taille de ta matrice, on effectue en général le décodage en deux temps :
    - première lecture pour compter le nombre de colonnes et le nombres de lignes,
    - puis deuxième passage pour lire le contenu.

    Voici le principe, pour des exemples, je pense que le nombre de tutoriels pullule sur le net, voir même sur le site de dvp, comme :

    http://c.developpez.com/sources/?page=V

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    d'après ce que j'ai compris, je dois faire une boucle while pour les lignes et dedans je fais une autre boucle pour les colonnes et de mettre des compteurs pour incrémenter le nombre de ligne et de colonne
    ensuite je procéde à la lecture des données ??

  4. #4
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Oui et non, c'est ça.
    Par contre, pour les colonnes, il suffit de faire l'opération pour la première ligne : compter le nombre de séparateurs.
    ATTENTION : vérifier la forme de fin de lignes (des fois, le séparateur est présent en bout de ligne)
    Pour les lignes, il suffit de compter le nombre de saut de lignes (\n)
    ATTENTION : à la fin du fichier (lignes vides)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    oui je vois ce que vous voulez dire mais le problème c'est que je suis pas trop pro dans la programmation C donc en ligne de code comment je peux compter le nombre de séparateurs pour les colonnes ??
    et pour le nombre de fichier comment je peux détecter qu'il y a des lignes vides ??

  6. #6
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Citation Envoyé par shmeta Voir le message
    oui je vois ce que vous voulez dire mais le problème c'est que je suis pas trop pro dans la programmation C donc en ligne de code comment je peux compter le nombre de séparateurs pour les colonnes ??
    Il faut commencer par connaître le type séparateur :
    ";", espace, ou tabulation "t"
    Pour la méthode, je vous propose de lire :
    http://c.developpez.com/sources/?pag..._nombre_lignes
    L'adaptation pour compter le nombre de séparateur ne devrait pas trop poser de problème.
    Citation Envoyé par shmeta Voir le message
    et pour le nombre de fichier comment je peux détecter qu'il y a des lignes vides ??
    Il y divers niveaux de vérification :
    - 2 "\n" à la suite indique une ligne vide
    - une ligne ne contient pas le bon nombre de séparateur de colonnes peut indiquer une erreur ou une ligne à ne pas prendre en compte.

    Commencer à essayer de coder et poster votre code sur le forum afin que l'on puisse vous guider.
    Et n'hésitez pas à faire appel à google : ce type de problème est courant...
    Bon courage

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    ok
    merci

    je vais commencer par modifier le code et je vous montre après le code

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    voici un petit code qui calcul le nombre de ligne , j'ai pris la fonction dans la page que vous m'avez communiqué , cependant je ne sais pas pkoi , il affiche toujours n =11 , même si je change le fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <string.h> 
     
    int nb_lignes (FILE *fp)
    {
      int n=0, c;
     
      while ((c = fgetc(fp)) != EOF)
      {
        if (c == '\n')
        {
          n++;
        }
     
      }
      return n;
    }
     
     
     
     
    FILE *ReadInput;
     
    int n ; 
     
    int main(int argc, char *argv[])
     
    {
     
     
     
     
     
    	ReadInput = fopen (argv[0], "r" ) ;
     
    	if(ReadInput == NULL)
    	{
    	printf("Le fichier des coordonnées NARR n'existe pas");
    	} 
     
    	else
    	{
    		n = nb_lignes(ReadInput);
     
    	}
     
    	printf("%d\n",n);
     
     
     
     
    return 1;
     
     
    }

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadInput = fopen (argv[0], "r" ) ;
    argv[0] représente le nom du programme. Tu ouvres toujours le même fichier

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 45
    Par défaut
    opui , pfffff j'ai la tête ailleurs

    merci bcp mec

  11. #11
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Effectivement,

    Le premier indice de argv ne représente pas votre paramètre mais fait référence (en principe) au nom de votre programme.
    Si vous tapez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monprograme.exe monfchier.txt
    monfichier.txt sera stocké dans argv[1]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    int main(int argc, char *argv[])
    {
    	if ( argc < 2) // vérifie si argument "texte à lire" est présent sinon arret programme
    	{
    		printf("fichier non spécifier !");
    		return -1;
    	}
     
    	ReadInput = fopen (argv[1], "r" ) ;
     
    	if(ReadInput == NULL)
    	{
    		printf("Le fichier des coordonnées NARR n'existe pas");
    		n=-1;
    	} 
    	else
    	{
    		n = nb_lignes(ReadInput);
    	}
    	printf("%d\n",n);
     
    return 1;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Coup de pouce lecture automatique de fichiers / boucle avec nom de fichiers
    Par nicolas.poulain dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 22/03/2014, 23h05
  2. Lecture automatique fichiers Excel sous BIRT
    Par Florent_45 dans le forum BIRT
    Réponses: 5
    Dernier message: 17/09/2012, 15h04
  3. Réponses: 2
    Dernier message: 08/09/2010, 14h47
  4. [XL-2007] Probleme de lecture seule automatique sur fichiers XL
    Par jahnow dans le forum Excel
    Réponses: 4
    Dernier message: 16/07/2009, 12h41
  5. Réponses: 6
    Dernier message: 14/06/2008, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo