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 :

Récupérer une valeur dans un fichier.


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Récupérer une valeur dans un fichier.
    Bonjour,

    Alors voici mon problème : je définit par exemple une constante dans le code source :

    et j'aimerais que quand un fichier texte quelconque comporte le terme "EXEMPLE" alors on met dans la variable la valeur 6.

    J'ai essayé avec "fscanf" mais je n'ai pas réussi, si vous savez comment faire merci de m'aider

    Merci.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 402
    Points : 23 785
    Points
    23 785
    Par défaut
    Bonjour,

    Citation Envoyé par Playstate Voir le message
    et j'aimerais que quand un fichier texte quelconque comporte le terme "EXEMPLE" alors on met dans la variable la valeur 6.
    Dans quelle variable ?

    J'ai essayé avec "fscanf" mais je n'ai pas réussi, si vous savez comment faire merci de m'aider
    C'est trop vague. Je pense que, toi-même, tu n'as pas encore défini clairement ce que tu veux faire au final et ça t'empêche d'avancer.

    Sache toutefois que les macros #define sont des directives à l'usage du pré-compilateur uniquement. Ça veut dire que le compilo lui-même ne verra jamais le mot « EXEMPLE » directement et qu'en tout état de cause, il n'en restera rien dans l'exécutable final, sauf si on l'a explicitement transformé en chaîne de caractères avec « # », par exemple.

    Si c'est un analyseur lexical que tu veux faire, l'approche la plus indiquée est de faire un tableau de structures contenant chacune une chaîne de caractères (le mot à rechercher) et une valeur (la valeur associée à ce mot). Ensuite, il faut lire ton entrée standard ou ton fichier, par exemple avec fscanf() comme tu le fais pour isoler les mots entre eux, puis confronter chacun d'eux à la totalité de la liste.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 732
    Points : 31 056
    Points
    31 056
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Ensuite, il faut lire ton entrée standard ou ton fichier, par exemple avec fscanf() comme tu le fais pour isoler les mots entre eux, puis confronter chacun d'eux à la totalité de la liste.
    Salut

    Je pense que cette solution sera compromise par les phénomènes de ponctuation difficiles à gérer.

    Perso je verrais plus une lecture de chaque ligne du fichier associée à une recherche à base de strstr() du mot "exemple" dans la ligne.

    Sinon l'idée de la structure est super. Mais comme la petite Playstate ne semble pas avoir une énorme expérience, on peut l'aider un peu plus...

    Code c : 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
    #include <stdio.h>
    #include <string.h>
     
    typedef struct {
    	char *mot;
    	int valeur;
    } t_lexique;
     
    int main()
    {
    	t_lexique tab[]={
    		{ "EXEMPLE", 6},
    		{ "BUT", 12},
    		{ NULL, 0},
    	};
    	t_lexique *pt;
    	FILE *fp;
    	char ligne[81];
     
    	fp=fopen("fichier", "r");
    	while (fgets(ligne, 81, fp) != NULL)
    	{
    		for (pt=tab; pt->mot != NULL; pt++)
    		{
    			if (strstr(ligne, pt->mot) != NULL)
    			{
    				printf("%s trouvé dans %s - %d\n", pt->mot, ligne, pt->valeur);
    			}
    		}
    	}
    	fclose(fp);
    }

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Oui voila c'est bien un analyseur lexical que je veux faire, suivant certains mots stockés dans un fichier je les remplace enfaite par une valeur.

    En tout cas merci de ton aide j'ai compris le principe je vais essayer de l'appliquer.

Discussions similaires

  1. récupérer une valeur dans un fichier
    Par yoyo-tns dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/07/2012, 10h20
  2. récupérer une valeur dans un fichier
    Par fbb53 dans le forum Shell et commandes GNU
    Réponses: 38
    Dernier message: 19/07/2011, 08h58
  3. Récupérer une valeur dans un fichier
    Par sebbb59 dans le forum Débuter
    Réponses: 10
    Dernier message: 11/01/2009, 15h19
  4. Réponses: 0
    Dernier message: 25/02/2008, 14h23
  5. récupérer une valeur dans un fichier .txt ?
    Par _n1n1_ dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/04/2007, 19h19

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