Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

[Matlab] Ecrire un espace dans un fichier binaire



  1. #1
    jepoirrier

    Question [Matlab] Ecrire un espace dans un fichier binaire


    ------

    Bonjour,

    Je dois ecrire un fichier binaire contenant des chaines ascii (je dois l'ecrire en binaire et pas en ascii car c'est un format standard). Ca, c'est facile :

    fid = fopen('monfichier.bin', 'wb');
    machaine = 'Bonjour!';
    fwrite(fid, machaine, 'char');
    fclose(fid);

    Mais, le probleme, c'est que ces chaines doivent etre justifiees a gauche et, si on n'atteint pas les 80 caracteres de contenu, il faut ajouter des espaces. Donc, j'ai essaye :

    fid = fopen('monfichier.bin', 'wb');
    machaine = 'Bonjour';
    [nlignes, nchars] = size(machaine);
    ncharsaajouter = 80 - nchars;
    for i = 1:ncharsaajouter
    machaine = strcat(machaine, ' ');
    end
    % *
    fwrite(fid, machaine, 'char');
    fclose(fid);

    Et ca ne marche pas.

    Meme quand je remplace la ligne avec * (et que j'enleve le %) par

    [nlignes, nchars] = size(machaine);

    nchars contient la valeur 7 (et pas 80). Pourquoi Matlab enleve les caracteres ' ' ? Et comment faire pour l'en empecher ? Ou existe-t-il une autre methode pour ecrire 80 caracteres ascii contenant des espaces a droite ?

    D'avance, merci !
    Jean-Etienne

    -----

  2. #2
    Sirius

    Re : [Matlab] Ecrire un espace dans un fichier binaire

    Un espace est un caractère ASCII, essaies avec le code correspondant.
    @+ Sirius

  3. #3
    jepoirrier

    Smile Re : [Matlab] Ecrire un espace dans un fichier binaire

    Citation Envoyé par Sirius
    Un espace est un caractère ASCII, essaies avec le code correspondant.
    Malheureusement, non :

    fid = fopen('monfichier.bin', 'wb');
    machaine = 'Bonjour';
    [nlignes, nchars] = size(machaine);
    ncharsaajouter = 80 - nchars;
    for i = 1:ncharsaajouter
    machaine = strcat(machaine, char(32));
    end
    % *
    fwrite(fid, machaine, 'char');
    fclose(fid);

    Cela ne marche pas non plus. Simplement parce que la fonction strcat enlève les espaces à droite (fallait que je lise la documentation plus tôt !).

    Pour ceux que çà intéresse, j'ai quand même trouvé une manière qui fonctionne :

    fid = fopen('monfichier.bin', 'wb');
    machaine = 'Bonjour';
    [nlignes, nchars] = size(machaine);
    ncharsaajouter = 80 - nchars;
    machaine = [mystring blanks(80-nchars)];
    fwrite(fid, machaine, 'char');
    fclose(fid);

    Un grand merci pour l'aide.
    Jean-Etienne

Discussions similaires

  1. Ecrire des donnees dans un fichier .txt avec MATLAB
    Par ghislaine dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 24/10/2011, 17h03
  2. le problème de publish un fichier dans matlab !
    Par uyendang dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 05/08/2007, 00h28
  3. Exportation de fichier dans MATLAB
    Par ouedfranck dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 06/02/2007, 20h02
  4. MATLAB: lecture de float dans un fichier RTF
    Par ghislaine dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/07/2004, 14h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.