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 :

Comment modifier la ligne d'un fichier texte


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Comment modifier la ligne d'un fichier texte
    Bonjour,

    Moi ma question est comment modifier seulement le 3em ligne d'un fichier texte.

    J'ai penser à ça mais ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    entrer(2)=10;
    fichier='Grangent.txt';
    fid = fopen(fichier , 'at');
    satuts=fseek(fid,3,-1)
    fprintf(fid, '%d', entrer(2)); 
    fclose(fid)

    Quelqu'un aurais une idée?
    Merci

  2. #2
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    A quoi ressemble ton fichier text ?

    quand tu dis que ça marche pas, tu veux dire qu'il y a une erreur ? Si oui montre la nous.



    PS: mon 100ème message
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    le fichier txt à la tête suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <#5>
    Configuration file for Grangent test case 
    2010166                 # Simulation start day (yyyyddd):30 juin 2009
    30                      # Simulation length (in days)
    0.5                   # Light extinction coefficient (m-1) (0.4 changé 24/02/10)
    0.13                    # Min layer thickness (m)
    6.0                     # Max layer thickness (m)
    3600                    # Time Step (s)
    Je voudrais via Matlab changer seulement le nombre de la 3em ligne

    Le code précédent écris un nombre à la fin du fichier .txt

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    La solution la plus simple pour ton problème consiste à lire ton fichier dans un premier temps (avec FREAD par exemple). De le modifier puis de réécrire les données modifiées (en écrasant le fichier précédent).

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Je suis bien d'accort que ça peut être la plus simple
    mais
    Si j'écris a=fread(fid,inf);
    alors
    a =
    a=[]

    Il est vrai que je ne sais pas bien me servir de cette fonction

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Cela vient de ta permission de fopen:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fid = fopen('monfichier.txt','rt');
    f = fread(fid,inf,'uint8=>char')'
    Le 'at' ne te permet que l'écriture à la fin de ton fichier, or ici tu veux lire ton fichier.

  7. #7
    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
    pour reecrire des chaines de caracteres moi je mets la commende "wt" à la fin de fopen

    ensuite tu as mis un %d mais cela depend du type de caractere sur que veux rentrer pour des chaines de caracteres j'utilise %g

    A+

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Dans le cas présent, il faut bien utiliser l'option 'rt' dans un premier temps pour lire le fichier puis l'option 'wt' pour le réécrire ensuite...
    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
    % Lecture du fichier
    fid = fopen('mon_fichier.txt','rt');
    if (fid == -1); return; end
    data = fread(fid);
    fclose(fid);
    
    % Traitement
    ...
    
    % Ecriture du fichier
    fid = fopen('mon_fichier.txt','wt');
    if (fid == -1); return; end
    ...
    fclose(fid);
    Pour écrire des chaînes de caractères, il vaut mieux utiliser %s dans FPRINTF (%g ou %d sont utilisés pour les nombres)
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Merci pour votre aide mais je crois que j'ai trouvé un truc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    %Ouverture du fichier
    fid = fopen('Grangent.txt','r+');
     
    %Placement du curseur
    fseek(fid,50,-1)  %placé en faisant des teste (50 Octés ?!?)
     
    %écriture par dessus
    bbb=2010165
    fprintf(fid,'%d %s',[bbb,'                  # Simulation start day (yyyyddd)'])
    fclose(fid);
    Par contre au lieu d'écrire 2010165 il écris 65535
    Le nombre est trop grand? il est pas considéré comme un entier?



    En gros
    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <#5>
    Configuration file for Grangent test case 
    2010166                 # Simulation start day (yyyyddd):30 juin 2009
    30                      # Simulation length (in days)
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <#5>
    Configuration file for Grangent test case 
    65535                 # Simulation start day (yyyyddd)n 2009
    30                      # Simulation length (in days)
    Comme vous pouvez le voir se n'ai pas parfaiy mais en tâtonnant on devrait y arriver

  10. #10
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Je pense qu'il faudrait mieux écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fprintf(fid,'%d %s',bbb,'                  # Simulation start day (yyyyddd)')
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ton problème, c'est que tu as mis des crochets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [bbb,' # Simulation start day (yyyyddd)']
    Est une seule variable et transforme bbb en caractères, ce qui a pour effet de le tronquer à 65535.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf('%d %s',bbb,' # Simulation start day (yyyyddd)')

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Merci pour tout

    Mon prb est résolu

    Trops bien ce Forum

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

Discussions similaires

  1. Lire et modifier les lignes d'un fichier texte
    Par GCAccess dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/12/2009, 14h28
  2. Réponses: 6
    Dernier message: 18/06/2009, 15h27
  3. [vb.net]Modifier une ligne d'un fichier texte
    Par Ykaar dans le forum VB.NET
    Réponses: 5
    Dernier message: 27/11/2008, 17h00
  4. Modifier une ligne d'un fichier texte?
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/05/2007, 18h51
  5. Modifier une ligne d'un fichier texte
    Par lauben dans le forum C
    Réponses: 2
    Dernier message: 27/05/2006, 12h45

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