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 :

comment recuper le numero d ligne de ligne d'un fichier


Sujet :

C

  1. #1
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut comment recuper le numero d ligne de ligne d'un fichier
    Bonjour à tous les developpeurs , jai un souci c'est que j'arrive^pas recuperer le numero de ligne pour chaque sequence de 2mot (concatenation des 2 mot voisin du fichier )
    voila j'ai fait un essai mais toujours pas de solution
    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
    58
    int main(void)
    {
    	FILE *fdesc=fopen(FNAME,"r");
    	Liste **TableHash;
    	(Liste **) malloc (TAILLEHASH * sizeof(Liste *));
    	 char buffer[BUFFSIZE];
          int nb_read=0;
          char buff[BUFFSIZE];
            char prec[BUFFSIZE];
            char mot_res[BUFFSIZE*2];
             int i=0;
         	int num_ligne=0;
    	if (fdesc!= NULL)
            {
     
                 if( get_word(fdesc,prec,BUFFSIZE) )
                        {
                            while( get_word(fdesc, buff, BUFFSIZE) )
                            {
                                num_ligne++;  // ici je vais mettre la valeur du numero de ligne 
                                printf("%s %s\n",prec,buff);
                                sprintf(mot_res, "%s %s", buff, prec);
                                 insere_table(TableHash, mot_res, num_ligne);  //ici on insere dans la table de hachage le mot resulatant et son numero de ligne où il se trouve 
                                strncpy( prec,buff,BUFFSIZE);
                            }
                        }
     
         printf("%d", num_ligne);
     
       }
    	dump_table(TableHash);
        free(TableHash);
    	return 0;
    }
    char* get_word(FILE *fdesc, char *buff, size_t size)
    {
    	char *ret=NULL;
     
    	if( fdesc!=NULL && buff!=NULL && size>0 )
    	{
    		int c;
    		int i=0;
    		while( ret==NULL && i<size && (c=fgetc(fdesc))!=EOF )
    		{
    			if( isalpha(c) )
    			{
    				buff[i]=c;
    				i++;
    			}
    			else if( i>0 )
    			{	/* mot */
    				buff[i]='\0';
    				ret=buff;
    			}
    		}
    	}
    	return ret;
    }
    aidez moi svp
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 378
    Points : 23 670
    Points
    23 670
    Par défaut
    Cyrine, s'il-te-plaît, n'ouvre pas une nouvelle discussion à chaque fois. Reste sur le même fil. Le fait de rajouter un message le fera remonter dans la liste des discussions nouvelles ou mises à jour. Merci.

    Pour le numéro de ligne, il faut d'abord que tu saches comment est formée une ligne d'un fichier texte : simplement en insérant le(s) caractère(s) de retour à la ligne, qui varie(nt) selon le système mais qui, en C, se représente(nt) par '\n'.

    Comme ta fonction get_word() égrenne un à un les caractères de ton fichier (comprendre par là que tu ne passes pas par un getline() préalable), c'est donc à elle de maintenir à jour, d'une manière ou d'une autre, le numéro de la ligne où elle en est.

    Ton programme est encore un peu hésitant, mais puisque tu passes déjà un pointeur vers un buffer à ta fonction, le plus propre pour ne pas avoir à recourir à une globale est de passer en plus un pointeur vers une variable de type unsigned int que ta fonction pourra incrémenter chaque fois qu'elle rencontre un '\n'.

  3. #3
    Débutant Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Points : 117
    Points
    117
    Par défaut
    D'accord Obsidian,
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

Discussions similaires

  1. [LibreOffice][Texte] comment ajouter des numeros de lignes à un paragraphe specifique
    Par flamant dans le forum OpenOffice & LibreOffice
    Réponses: 7
    Dernier message: 26/10/2014, 18h46
  2. [MySQL] comment recuperer un numero de ligne dans un resultat
    Par lupus83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/12/2009, 19h32
  3. Comment voir les numero de ligne avec visual C++ 6.0
    Par giggs dans le forum Visual C++
    Réponses: 3
    Dernier message: 23/10/2006, 14h23
  4. Réponses: 6
    Dernier message: 19/09/2006, 09h03
  5. Réponses: 22
    Dernier message: 28/04/2006, 12h52

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