2011-03-09 2 views
1

J'essaie d'appeler le gnuplot à partir de C++. J'utilise wgnuplot pour Windows et VS2005 C++.Création d'un tube et écriture dans le terminal gnuplot à partir de C++

L'instruction suivante fonctionne parce qu'elle ouvre le terminal gnuplot

FILE *p = _popen("wgnuplot -persist","w"); 

Mais je ne peux pas écrire quoi que ce soit là-bas. Mon terminal est toujours vide même après l'exécution du code suivant.

fprintf(p, "set terminal x11 enhanced\n"); //set appropriate output terminal for the plot 
fprintf(p, "set xlabel 'N'\n");//set xlabel 
fprintf(p, "set ylabel 'error'\n");//set ylabel 

Pourriez-vous s'il vous plaît me dire ce qui pourrait être le problème, à savoir pourquoi le terminal est vide et fprintf() ne semble pas fonctionner?

Merci,

Boris

+1

Est-ce que vous appelez aussi 'fflush (p)'? – 6502

+0

Ceci est mon code complet: FICHIER * p = _popen ("wgnuplot", "w"); Fprintf (p, "plot sin (x)") ; fflush (p); fflush (stderr); getchar(); fprintf (p, "exit \ n"); _pclose (p); – Boris

Répondre

0

Vérifiez que le pointeur de fichier n'est pas NULL:

if(!p) 
    // _popen() has failed... 
+0

- \t \t tuyau \t 0x10311d68 {_ptr = 0x00000000 _cnt = 0 _base = 0x00000000 ...} \t _iobuf * – Boris

+0

Voilà ce que je reçois quand je déboguer et vérifier ce qui est dans le tuyau. Je ne sais toujours pas pourquoi fprintf() n'écrit rien sur le terminal. – Boris

+0

@Boris si p semble être ok, mais les internes semble souffler ... Je vous suggère de regarder dans le mécanisme de rapport d'erreur de la fonction, il peut être dû à l'approvisionnement de faux paramètres. –

0

Je ne sais pas si cela vous aide, mais cela est mon approche de l'exécution gnuplot de mon C programmes:

  1. créer un fichier modèle (généralement je ne le supprime pas, de sorte que je t est plus facile à résoudre), où toutes les commandes gnuplot sont sont scriptés dans.

  2. Je lance gnuplot avec

    system("gnuplot <TemplateFile>") 
    

Si vous ne souhaitez que la création d'un complot, que sa ferait le travail. Si vous êtes explicitement intéressé par l'approche que vous avez décrite ci-dessus simplement ignorer cette annonce;)

Cherio Woltan

Questions connexes