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

MATLAB Discussion :

lecture fichier contenant des string


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Par défaut lecture fichier contenant des string
    Bonjour,
    J'ai un fichier contenant des string et des chiffres.
    Mon but c'est le lire pour se servir des données qu'il y a dedans.
    Le problème c'est que j'arrive à lire et afficher les valeurs (chiffres) mais non pas les "string" !
    Par exemple, pour simplifier considérons seulement les 3 premières ligne de mon fichier à savoir :

    nombre_origine 1
    ============================================================
    nom Nom_jonction_destination longueur nbv vit debit
    ============================================================
    orig1 jonc1 300 1 25 0.8

    Moi pour lire cette partir je fais comme suit :
    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
     
    monfichier = 'C:/FichierConfiguration.txt';
    reseau = fopen(monfichier,'r','n','UTF-8');% open the file
    ligne = fgetl(reseau);
    disp(ligne); %affichage à l’écran
    mots = regexp(ligne, '\s+', 'split'); %Renvoie les mots de la ligne separement dans un cell array
    nbr_origines = str2num(char(mots(2)));
    %On passe les 3 lignes vides d'entête
    fgetl(reseau);
    fgetl(reseau);
    fgetl(reseau);
    ligne = fgetl(reseau);
    mots = regexp(ligne, '\s+', 'split') 
    nom_orig = str2num(char(mots(1)))
    Nom_jonction_destination_orig = str2num(char(mots(2)));
    longueur_orig = str2num(char(mots(3)));
    nbr_voies_orig = str2num(char(mots(4)));
    vitesse_orig = str2num(char(mots(5)));
    debit_orig = str2num(char(mots(6)));
     
    disp(['nom_orig = ', num2str(nom_orig)]);
    disp(['Nom_jonction_destination_orig = ', num2str(Nom_jonction_destination_orig)]);
    disp(['longueur_orig = ', num2str(longueur_orig)]);
    disp(['nbr_voies_orig = ', num2str(nbr_voies_orig)]);
    disp(['vitesse_orig = ', num2str(vitesse_orig)])
    disp(['debit_orig = ', num2str(debit_orig)]);
    Et là il m'affiche seulement les valeurs : voilà le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    nombre_origine 1
    nombre d'origine = 1
    nom_orig = 
    Nom_jonction_destination_orig = 
    longueur_orig = 300
    nbr_voies_orig = 1
    vitesse_orig = 25
    debit_orig = 0.8
    Je ne sais pas pourquoi il me donne pas "nom_orig" qui doit être un string "nom_orig = orig1" ?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Pour ma part, voici comment je procéderais :
    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
    fid = fopen('FichierConfiguration.txt','rt');
     
    str = fgetl(fid);
    nbr_origines = sscanf(str,'%*s%d');
     
    fgetl(fid);
    fgetl(fid);
    fgetl(fid);
     
    str = fgetl(fid);
    data = textscan(str,'%s%s%d%d%d%f');
     
    fclose(fid);
     
    fprintf('nom_orig = %s\n', data{1}{1});
    fprintf('Nom_jonction_destination_orig = %s\n', data{2}{1});
    fprintf('longueur_orig = %d\n', data{3});
    fprintf('nbr_voies_orig = %d\n', data{4});
    fprintf('vitesse_orig = %d\n', data{5});
    fprintf('debit_orig = %.1f\n', data{6});

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2011, 15h46
  2. Lecture de fichiers contenant des dates + plot
    Par jena dans le forum Signal
    Réponses: 1
    Dernier message: 10/04/2011, 14h05
  3. Lecture/affichage d'un fichier contenant des string
    Par Khaoula.85 dans le forum Visual C++
    Réponses: 4
    Dernier message: 02/12/2009, 11h13
  4. Réponses: 2
    Dernier message: 22/05/2006, 00h07
  5. Renommer des fichiers contenant des espaces
    Par MatRem dans le forum Linux
    Réponses: 6
    Dernier message: 28/04/2006, 08h21

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