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 :

Pointer sur un fichier FILE *


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Pointer sur un fichier FILE *
    Bonjour, voila mon probleme, je lis un fichier caractare par caractere jusqu'a la fin du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((c=fgetc(fichier))!=EOF)
    Lorsque j'ai recuperer le mot que je cherchais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcmp(find,"ServerName")==0;
    , la chaine de caractere char find etant obtenur par while(c!=0x20){ find[i++]=c;} je souhaite me placer 2 caractere apres le fameux "ServerName" dans le fichier. J'ai essayer avec un pointeur int *ptr=&c; puis *ptr+=2; mais ceci ne marche pas (car bien sur il increment la valeur de c et non le caractere lu). Si quelqu'un a une solution... Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Je me demandais aussi si il faut utiliser fseek ou pas ? Mais je ne sais pas trop l'utiliser :/

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Pointer sur un fichier FILE *
    Citation Envoyé par Biou Pink Powa
    je lis un fichier caractère par caractère jusqu'à la fin du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((c=fgetc(fichier))!=EOF)
    Lorsque j'ai recuperé le mot que je cherchais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcmp(find,"ServerName")==0;
    , la chaine de caractere char find etant obtenur par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(c!=0x20){ find[i++]=c;}
    je souhaite me placer 2 caractere apres le fameux "ServerName" dans le fichier. J'ai essayé avec un pointeur
    puis
    mais ceci ne marche pas (car bien sur il increment la valeur de c et non le caractere lu).
    Si j'ai bien compris, tu cherches à atteidre le caractère du fichier situé 2 caractères après avoir trouvé 'ServerName'.

    Si c'est un fichier binaire (suite de bytes sans organisation précise), je ne vois guère que la méthode de la machine à états pour t'en sortir proprement. L'évènement étant le caractère lu. Pas trivial, mais faisable.

    Si c'est un fichier texte, c'est plus simple. Il est donc organisé en lignes (séquences de caractères terminées par '\n' ou la fin de fichier). Dans ce cas, il faut lire les lignes une par une, (fgets()), chercher dans chaque ligne la présence de 'ServerName'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *p = strstr (sline, "ServerName");
    Si p est non NULL, ce que tu cherches se trouve à l'index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size_t i = strlen ("ServerName") + 2
    par rapport à p, c'est à dire p[i].
    Il faut évidemment s'assurer qu'il y a bien quelquechose à cet index.
    à une vache près (+/- 1). Je te laisse coller les morceaux et faire la mise au point...

    Nota : Ne pas utiliser 0x20 si tu parles du caractère espace (SPC), mais plutôt la notation portable ' '. Mieux encore, la fonctions isspace() (<ctype.h>) permet de déterminer si un caractère est SPC ou TAB.

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Ok merci bcp je vais essayer ca, en fait je faisait une lecture caractere par caractere, je mettais les caracteres dans un buffer, je comparais a ServerName, et si je rencontrais l'espace je vidais le buffer. J'avais egalement vu que l'on pouvait lire le fichier ligne par ligne et "bloc" par "bloc" mais je m'etais contenter de le lire caractere par caractere.
    (En effet c'est un fichier texte).

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/07/2011, 10h59
  2. Faire pointer le classpath sur des fichiers du jar
    Par Adriano1664 dans le forum Général Java
    Réponses: 2
    Dernier message: 29/04/2008, 12h05
  3. echec de File.Exists sur un fichier existant
    Par Jack_serious dans le forum C#
    Réponses: 4
    Dernier message: 27/07/2007, 22h15
  4. [File] Ecriture / Lecture simultanée sur un fichier
    Par kij dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/07/2007, 19h11
  5. [VBA-E] Pointer sur un autre fichier Excel
    Par Yop dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/12/2006, 20h43

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