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 :

rentrer dans une certaine ligne d'un fichier texte Possible? [Débutant]


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut rentrer dans une certaine ligne d'un fichier texte Possible?
    Bonjour tous,

    je m'explique, j'ai dans mon répertoire de travail un fichier qui a une extension .inp que j'ouvre habituellement avec notepad.

    J'aimerai acceder avec matlab a ce fichier et aller à la 32000 ligne pour la remplacer par une autre.

    je sais ouvrir un fichier en faisant fopen, je sais ecrire avec fprintf mais par contre je ne sais pas comment aller à la 32000 ligne et la remplacer par une autre.

    j'espere que vous pouvez m'aider....

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    A mon avis, tu vas être obligé de lire les lignes une par une et de les récrire dans un nouveau fichier. Quand tu lis la ligne 32000 tu la remplaces.

    Tu peux t'inspirer de la : Comment passer l'entête d'un fichier texte en lecture ?

    Par exemple :
    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
    % Ouverture du fichier en lecture txt
    fid = fopen('fichier.txt','rt');
    % Ouverture du fichier en écriture txt
    fidm = fopen('fichiermod.txt','wt');
     
    % Nombre de ligne à passer
    N = 31999
     
    for n = 1:N
       ligne = fgets(fid);
       fprintf(fidm,ligne);
    end
     
    ligne = fgets(fid);
    fprintf(fidm,'Ici tu remplaces la ligne');
     
    while 1
        ligne = fgets(fid);
        if ~ischar(ligne), break, end
        fprintf(fidm, ligne);
    end
    fclose(fid);
    fclose(fidm);
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci beaucoup de ta reponse, je vais regarder cela

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    il y a un truc que je n'ai pas compris....


    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
    % Ouverture du fichier en lecture txt
    fid = fopen('fichier.txt','rt');
    % Ouverture du fichier en écriture txt
    fidm = fopen('fichiermod.txt','wt');
    
    % Nombre de ligne à passer
    N = 31999
    
    for n = 1:N
       ligne = fgets(fid);
       fprintf(fidm,ligne);
    end
    
    ligne = fgets(fid); je ne comprends pas pourquoi on doit remettre cela 
    fprintf(fidm,'Ici tu remplaces la ligne');
    
    while 1 %si on met 1alors la boucle ne s'arrete pas?
        ligne = fgets(fid);
        if ~ischar(ligne), break, end ischar ne va pas regarder juste le premier caratere de la ligne? 
        fprintf(fidm, ligne);
    end
    fclose(fid);
    fclose(fidm);

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = fgets(fid); je ne comprends pas pourquoi on doit remettre cela
    Cela permet de passer la ligne que tu ne veux pas copié. Il faut la lire pour pouvoir passer à la suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while 1 %si on met 1alors la boucle ne s'arrete pas?
    ...
    if ~ischar(ligne), break, end ischar ne va pas regarder juste le premier caratere de la ligne?
    La boucle if permet de sortir de la boucle. ischar test le tableau en entier (de toute manière dans un tableau basique, tu ne peux pas avoir des objets de type char et int en même temps).

    Dans la doc de fgets :
    If just an end-of-file is encountered then -1 is returned
    Quand fgets lira la fin du fichier, il renverra -1 donc ce n'est pas un caractère donc le break permettra de sortir de la boucle. (ce code (la boucle avec le while) est tiré de la doc de fegtl)).
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Ok finalement j'ai compris!

    Merci beaucoup pour ton aide, c'est exactement ce qui me fallait

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

Discussions similaires

  1. Afficher une certaine ligne d'un fichier texte.
    Par lostsoul dans le forum Général Java
    Réponses: 6
    Dernier message: 18/11/2013, 03h33
  2. Réponses: 5
    Dernier message: 08/02/2013, 11h05
  3. supprimer une certaine ligne d'un fichier
    Par morphemia dans le forum Langage
    Réponses: 1
    Dernier message: 10/11/2011, 20h35
  4. [Batch] Lire une certaine ligne d'un fichier ini
    Par ptilemare dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 02/08/2010, 08h11
  5. [XL-2003] Copie données usf dans une certaine ligne tableau excel
    Par mikam1660 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2010, 17h49

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