Bonjour,
Tout d'abord je tiens à vous présenter mes excuses pour mon niveau très bas en programmation.
Je viens de découvrir le C depuis une semaine dans le cadre d'un stage.
Mon tuteur, qui travaille sur Windows, veut que je visualiser une partie d'un programme écrit en C sous Visual C++ Express, en utilisant Gnuplot. Visiblement sous Windows, il suffit de compiler et exécuter le programme, de cliquer sur le fichier .plt pour qu'il s'exécute et ouvrir le fichier dans GhostScript Viewer. Voici mes questions:
1) Quel est l'équivalent de GhostScript Viewer sur Linux? Je dois dire que je ne connaissait pas du tout les fichier .Eps et cie jusqu'à aujourd'hui.
2) Tout simplement: Comment dois-je exécuter mon fichier .plt pour qu'il prenne en compte le fait que j'ai compilé/exécuté mon programme en C, et comment puis-je le visualiser?
Edit: Okay, je compile et exécute mon programme sous Code Blocks, j'ouvre un terminal, me place dans le dossier où se trouve mes fichiers, et je tape la commande plot 'monfichier.plt'. J'obtiens les erreurs suivantes:
# PLOT 1
plot: an unrecognized command0xd' was encountered in the input
ZVC.plt' could not be parsed
plot: the input file
J'utilise Code Blocks pour coder. Je suis sous Ubuntu 14.04.
En vous remerciant pour votre lecture,
Bonne journée,
Kochflakes
# decouper le probleme pour le comprendre
Posté par NeoX . Évalué à 2.
1°) tu as un programme developpé en C (peut-etre pour windows) qui genere un fichier de sortie .plt
il faut deja verifier que ce programme peut se compiler et se lancer sous windows pour generer le fichier .plt
qui sera lisible par le lecteur habituel sous windows (via gnuplot)
2°) tu peux/dois verifier que le fichier .plt genéré sous windows soit bien lisible sous linux (via gnuplot)
3°) visiblement ton gnuplot prend le fichier .plt pour en faire un fichier postscript (.ps)
et c'est pour cela que ton tuteur utilise ghostscript pour le visionner.
finalement, tu as de la chance, ton tuteur, meme s'il est sous windows, utilise des outils GNU.
- gnuplot (dispo sous linux aussi)
- ghostscript (dispo sous linux aussi)
il ne te reste donc plus que la problematique de compiler le projet avec codeblock ou l'IDE de ton choix, à partir du code source du projet VisualC++
[^] # Re: decouper le probleme pour le comprendre
Posté par _kaos_ . Évalué à 1.
Hello,
Pas si sûr. Devoir travailler dans un environnement que son tuteur ne connais pas, ça peut vite deveir gênant. Il ne s'agit pas que d'un "simple" travail exploratoire d'une bibliothèque, d'un outil, qui même si pas connus du tuteur peut être conduit de manière guidée. Là, j'ai plus l'impression que le tutoré est complètement laissé à lui même (parce qu'un gnuplot qui ne lirait pas un fichier généré sous windows, ça me semble louche, à la base).
Matricule 23415
# (bug de ma part)
Posté par lolop (site web personnel) . Évalué à 2. Dernière modification le 22 mai 2015 à 20:16.
(zip au temps pour moi)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Fin de ligne ?
Posté par audionuma (site web personnel, Mastodon) . Évalué à 1.
Hypothèse : le code source issu de Visual C++ comporte des caractères littéraux encodés en cp1252 ou autre encodage windowsien.
Lors de la compilation sous GNU-Linux, ces caractères sont scrupuleusement recopiés dans l'exécutable, qui lui même les insère dans le fichier plt produit.
Je suggère donc de chercher dans le fichier plt (en l'ouvrant avec un éditeur de texte) où se trouve ce caractère 0xd (qui semble être un retour chariot, on est donc peut-être bien dans un problème de différence de fin de ligne), ce qui permettra peut-être d'identifier quelle partie du code source en est à l'origine, et de corriger.
Bon, c'est peut-être pas du tout ça, hein, mais ça vaut le coup d'essayer.
# Erreurs suivantes
Posté par Kochflakes . Évalué à 1. Dernière modification le 23 mai 2015 à 14:14.
Bonjour,
Merci pour vos réponses.
@Neox: 1) Visiblement lorsque mon tuteur compilait sous Windows, tout fonctionnait correctement.
2) C'est justement là mon problème, je n'arrive pas à lancer le fichier .plt et visualiser la courbe cherchée.
3)Je vais installer GhostScript et essayer de voir un peu comment me dépatouiller.
@ kaos: C'est en effet le cas. D'un point de vue purement ethnocentré, je partait du principe que le monde universitaire fonctionnait tous sur Linux (comme c'est le cas en France en sciences). Sauf qu'en Espagne, ce n'est pas le cas (c'est même voire l'inverse.) Du coup mon tuteur n'a visiblement pas une bonne connaissance de Linux (je dirais: la même que la mienne, à savoir, très basse…).
@audionuma: J'ai essayé d'encoder le fichier .plt en UTF-8, je crois que j'ai réussi. Désormais je rencontre les erreurs suivantes:
Sachant que le fichier est le suivant:
Originellement, mon tuteur avait écrit "set term", que gnuplot ne comprenait visiblement pas.
Si j'effectue la commande suivante:
et l'autre:
Merci pour votre aide, avec un peu de chance, ce n'est qu'un petit problème!
[^] # Re: Erreurs suivantes
Posté par lolop (site web personnel) . Évalué à 3.
Comme déjà dit, gnuplot et ghostscript sont dans toutes les distribs linux. Un
rpm -i xxx
ou unapt-get install xxx
en étant root devrait faire l'affaire pour les installer (sinon passer par le gestionnaire graphique de paquets - ou installeur d'application).Pour ton erreur 0xd. Une possibilité de cause:
sous Windows (et MS-DOS précédemment), les fin de ligne sont composés de 2 caractères CR+LF (codes 0x0d et 0x0a ou encore "\r\n" dans beaucoup de langages de programmation).
sous Unix (et repris par Linux), les fin de ligne sont composées d'un seul caractère LF (code 0x0a ou encore "\n").
Si tu reprends tel quel le script de ton tuteur en le transférant, il est probable qu'il vienne en mode fin de ligne MS-DOS, et que gnuplot ne comprenne pas le CR surnuméraire.
Deux solutions:
l'ouvrir avec un éditeur de texte et l'enregistrer en spécifiant bien "fin de ligne Unix".
utiliser un outil de conversion comme dos2unix (qui est aussi dispo dans les packages Linux sur toutes les distribs).
Note que si tu as des fichiers de donnée sous forme de texte, provenant du monde Windows, il est probable qu'ils souffrent du même défaut qui les empêche d'être lus par gnuplot (que tu peux résoudre avec la même solution)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Erreurs suivantes
Posté par Kochflakes . Évalué à 1.
Merci lolop, pour ces conseils.
J'ai réenregistré tous les fichiers potentiellement lié s au fichier .plt en changeant leurs fins de ligne, et de même pour le fichier .plt.
Le plot ne marche toujours pas.
J'ai installé dos2unix, essayé dos2unix 'monfichier.pt', ou encore dos2unix 'monfichier.txt' en ayant changé le fichier en .txt.
Au bout de 20 minutes, dos2unix n'a toujours pas converti le fichier.
En tous les cas maintenant, ce n'est plus 0xd, mais 0xa…
Je revois mon tuteur lundi, avec un peu de chances quelqu'un de son entourage pourra nous aider aussi. En attendant, merci pour votre aide,j'y vois au moins plus clair dans ce qui potentiellement pose problème!
# Problème résolu
Posté par Kochflakes . Évalué à 1.
Bonjour,
Alors, visiblement, quelques réponses bêtes:
Je ne me plaçait pas dans le bon répertoire pour exécuter mes commandes.
Un peu moins facile:
J'étais (tout simplement) en train de coder en C, alors que j'aurais dû utiliser un langage c++.
Par ailleurs je n'utilisais pas la bonne commande. Il fallait utiliser load 'Monfichier.plt' et non gnuplot 'Monfichier.plt' ou plot 'Monfichier.plt'.
Merci pour votre aide, et bonne journée.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.