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 :

Faire un variable à partir d'un mot dans un txt


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Faire un variable à partir d'un mot dans un txt
    Bonjour, je crois que le sujet est clair.

    A partir d'un fichier txt, je veu récupérer un mot et le stocker dans une variable pour la passer en argument pour la fonction system.

    Le mot est du type nom.sxw et est contenu dans un fichier txt

    Et donc ensuite j'utilise system(nom.sxw) pour ouvrir mon fichier.

    le problème est de récupérer nom.sxw, en fait je récupère que des chiffres avec fgetc, ça doit être le code ASCII je croi??

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    fgetc retourne un entier mais qui aura la valeur ascii d'un caractère ou EOF s'il est à la fin du fichier ou s'il y a une erreur..

    Il suffit donc de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int i = fgetc(f);
    char c;
     
    assert(i!=EOF);
     
    c = (char) i;
    Jc

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    ça ne change rien, il me donne la même chos pour i et c?

  4. #4
    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 : 67
    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
    Citation Envoyé par fearyourself
    Il suffit donc de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int i = fgetc(f);
    char c;
     
    assert(i!=EOF);
     
    c = (char) i;
    Rester simple !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       int c = fgetc(f);
     
       if (c != EOF)
       {
          ...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Voilà le cide que j'utilise, il m'affiche la même chose pour i et c

    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
     
    #include<stdio.h>
    #include<stdlib.h>
    #define ENTREE "essai.txt"
     
    int main()
     
    {
     
    FILE *fichier;
    int i;
    char c;
     
     
     
    if ((fichier = fopen(ENTREE,"r")) == NULL)
    {
        fprintf(stderr,"\nErreur : Impossible de lire le fichier %s\n", ENTREE);
        return(EXIT_FAILURE);
        }
     
     
    while((i = fgetc(fichier))!= EOF)
    {
     
        printf("%d\n",i);
        c = (char) i;
        printf("%d\n",c);
    }
    fclose(fichier);
     
    }

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    La valeur ascii sera la même parce que tu affiches avec un "%d", si tu veux le caractère correspondant, il faut utiliser "%c".

    Jc

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Ok merci ça, ça marche mais maintenant, il faut que je crais ma variable avec les caractères que je récupère.

    Donc il faudrait que je concatène toutes les lettres pour obtenir ma chaine de caractères?

  8. #8
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Tu peux ajouter un a un tes caractères dans un tableau de caractère (ie : une chaine de caractère). Et ne pas oublier le caractère 0 à la fin de ta chaine.

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Donc il faudrait que je concatène toutes les lettres pour obtenir ma chaine de caractères?
    Cela semble assez logique, oui

  10. #10
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Le problème est que même si je fai la conversion de type, si ma variable i est 33 en ASCII, et que je fais

    dans c, jaurai une chaine de caractère mais qui vaut 33 et pas A.

    Dites moi si je me trompe??

  11. #11
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Non tu aura le caractère qui a le code ascii 33, un caractère est un entier.

    La seule distinction se fera dans ta fonction printf ou scanf pour déterminer si tu veux le code ascii ou la caractère associé, d'ou l'utilisation de %c et de %d.

  12. #12
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Ok mais scanf demande à l'utilisateur de rentrer une information hors là ce n'est pas le cas.

    Peut-être avec fscanf alors?

  13. #13
    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 : 67
    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
    Citation Envoyé par Apophis03
    Ok mais scanf demande à l'utilisateur de rentrer une information hors là ce n'est pas le cas.

    Peut-être avec fscanf alors?
    Ca dépend comment est organisé ton fichier.

    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  14. #14
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Dans mon fichier texte, il y'a juste un nom de document du type
    nom.sxw

  15. #15
    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 : 67
    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
    Citation Envoyé par Apophis03
    Dans mon fichier texte, il y'a juste un nom de document du type
    nom.sxw
    Un simple fgets() suffit à lire cette ligne.

    Après, on verra ce que tu veux en faire.
    Pas de Wi-Fi à la maison : CPL

  16. #16
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Ensuite, je veux utiliser le nom du fichier comme argument dans la fonction system()

  17. #17
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Ok merci à tous ça marche.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/08/2009, 09h07
  2. compter le nombre de meme mot dans un .txt
    Par Gogad dans le forum Général Python
    Réponses: 11
    Dernier message: 04/05/2009, 00h50
  3. c++ position de mot dans un .txt
    Par yanlou dans le forum C++
    Réponses: 6
    Dernier message: 09/07/2008, 11h48
  4. Sélection de certains mots dans un .txt
    Par Dorhken dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 09/12/2007, 17h51
  5. Réponses: 2
    Dernier message: 26/12/2006, 22h40

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