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 :

[fprintf] \n et retour à la ligne sous linux


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut [fprintf] \n et retour à la ligne sous linux
    Bonjour
    Lors du développement d'une fonction de calcul de champs électromagnétique, j'ai rencontré un problème très bizarre, j'espère que vous pourriez m'aider à découvrir la source du problème: Alors voici l'énigme :
    Sur mon poste windows, Matlab (MATLAB 7.13.0.564 (R2011b)) reconnait à l'intérieur de ma fonction le '\n' comme étant le retour à la ligne sans aucun problème: exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Filename = 'document_simulation_espace_libre';
    fichier1=[Filename,'.dat'];
    fid1= fopen([Rep_Res,fichier1],'wt');
    Jusqu'à l'instant aucun problème.MAIS dès que j'envoie mes codes sur un serveur de Calcul (version serveur Linux 5), Mr Matlab (R2011b) ne reconnait pas le \n, il m'écrit tout à la même ligne jusqu'à arriver à la fiiiiin du document.
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fid1= fopen([Rep_Res,fichier1],'at');
    ça ne marche toujours pas. Quelqu'un svp pourra me résoudre ce problème.
    Merci d'avance.

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut sachant que
    j'ai voulu ajouter que la version serveur de Matlab reconnait comme même le \n comme étant le retour à la ligne avec la fonction sprintf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >> sprintf(['annie','\n','florence','\n','alice'])
     
    ans =
     
    annie
    florence
    alice
    donc le problème est , parait il, propre à la fonction fprintf. quelqu'un aura une solution s'il vous plait !!

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    Logiquement fprintf fait la même chose que sprintf sauf qu'il écrit dans un fichier (cf doc sprintf).
    Est-ce que c'est possible de voir ta commande pour fprintf?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    d'abord merci pour l'intérêt. Voilà un bout de code qui marche très bien sous windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fprintf(fid1,['Les methodes utilisees sont : ',methodes_names, '\n', '\n']);
    fprintf(fid1,['Nbre d''experience  = ',num2str(nbre_experience), '\n', '\n']);
    fprintf(fid1,['Le parametre en question est -',param_name,'-', '\n']);
    Avec la même syntaxe sur Linux ça me donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Les methodes utilisees sont : CBFM Normale2;CBFM Extended2;MoMNbre d'experience  = 1Le parametre en question est -Pas CBFM-
    tout sur la même ligne avec le reste.
    Et ce qui est plus bizarre c'est qu'on le collant dans l’éditeur de développez.com il a repris la forme qui m'intéresse comme si ça dépend de l'éditeur.

    ET EN VERIFIANT SUR MON CODE de lecture et d'affichage, il s’avère qu'il le lit comme je l'ai écrit (c à d en tenant compte du \n) et pas comme l'éditeur l'affiche !!! c'est bizarre non ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Tu n'utilises pas FPRINTF de la bonne manière.

    Voici la syntaxe correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fprintf(fid1,'Les methodes utilisees sont : %s\n\n',methodes_names);
    fprintf(fid1,'Nbre d''experience  = %d\n\n',nbre_experience);
    fprintf(fid1,'Le parametre en question est -%s-\n',param_name);
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 291
    Points : 434
    Points
    434
    Par défaut
    C'est vrai que la syntaxe est à revoir .

    Sinon tu peux aussi essayer de remplacer \n par \r\n pour le retour de charriot:

    doc fprintf
    fprintf(fid, '%6.2f %12.8f\n', y);
    MATLAB import functions, all UNIX applications, and Microsoft Word and WordPad recognize '\n' as a newline indicator. However, if you plan to read the file with Microsoft Notepad, use '\r\n' to move to a new line when writing. For example, replace the previous call to fprintf with the following:

    fprintf(fid, '%6.2f %12.8f\r\n', y);

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Merci pour vos réponses
    Enfin j'ai découvert qu'il n'y avait de problèmes avec le \n puisque mes codes d'affichage sous windows lisent avec tline = fgetl(fid1); le retour à la ligne même s'il ne se voit pas sur Blocs Note. Le problème qui a empêché mes codes d'afficher les résultats est totalement différent: tout ce qui s'écrit avec accent n'est pas acceptés sur ma version serveur donc logiquement il ne reconnait plus les lignes que je lui demande de reconnaître --> des vecteurs vides ---> des problèmes d'affichage. A titre d'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sprintf('Nombre d''emetteurs utilisés pour appliquer la CBFM  = %d ',Emetteur.N_Emetteur);
    donnera sous la version linux un n'importe quoi au niveau du mot utilisés.
    Merci beaucoup pour vos réponses et votre intérêt.

Discussions similaires

  1. Clavier visuel + retour à la ligne sous ie
    Par keul85 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/07/2007, 12h32
  2. [MySQL] Retour à la ligne est traduit par rn sous mysql
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2007, 12h17
  3. Ligne de commande sous linux
    Par dondano dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 17/01/2007, 10h22
  4. Désactiver le retour à la ligne après un hr sous IE6
    Par Le_MaLaDe dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 30/11/2006, 14h45
  5. Réponses: 1
    Dernier message: 17/10/2006, 13h55

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