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

C Discussion :

sortie de fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut sortie de fichier
    Bonsoir à ceux qui sont encore là.

    J'ai un problème de sortie de fichier.
    Mon code est censée donnée un fichier du type postscript (.eps si j'ai bien compris) . Le problème est que je n'obtiens pas le fichier de sortie attendu mais une sortie des données brutes sur mon terminal. Est ce qu'il faut ajouter un argument au compilateur pour sortir le fichier dont j'ai besoin ?

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    void ps_residues()
    {
      float xmin = 1e10, xmax = -1e10, ymin = 1e10, ymax = -1e10;
      int width = 1000, height = 1000;
      int k, chain_id = 0;
     
      printf("%%!PS-Adobe-2.0 EPSF-2.0\n"
    	 "%%%%BoundingBox: 0 0 %d %d\n\n", 
    	 width, height);
    //
      printf("/Courier findfont 12 scalefont setfont\n\n");
      for (k = 0; k < nres; k++) {
        if (residue[k].x < xmin) xmin = residue[k].x;
        if (residue[k].x > xmax) xmax = residue[k].x;
        if (residue[k].y < ymin) ymin = residue[k].y;
        if (residue[k].y > ymax) ymax = residue[k].y;
      }
     
      for (k = 0; k < nres; k++) {
        float px = (residue[k].x-xmin)/(xmax-xmin)*width;
        float py = (residue[k].y-ymin)/(ymax-ymin)*height;
        if (residue[k].chain_id != chain_id) {
          chain_id = residue[k].chain_id;
          if (k > 0)
    	printf("stroke\n");
          if (residue[k].chain_id == 'A')
    	printf("255 0 0 setrgbcolor\n");
          else
    	printf("0 0 255 setrgbcolor\n");
          printf("newpath ");
          printf("%f %f moveto\n", px, py);
        }
        else
          printf("%f %f lineto\n", px, py);
      }
      printf("stroke\n");
     
      printf("0 0 0 setrgbcolor\n");
      for (k = 0; k < nres; k++) {
        float px = (residue[k].x-xmin)/(xmax-xmin)*width;
        float py = (residue[k].y-ymin)/(ymax-ymin)*height;
        printf("%f %f moveto (%d) show\n", px, py, residue[k].res_seq);
      }
     
      printf("0 255 0 setrgbcolor\n");
      for (k = 0; k < 10; k++) {
        float px1 = (residue[res_pair[k].r1].x-xmin)/(xmax-xmin)*width;
        float py1 = (residue[res_pair[k].r1].y-ymin)/(ymax-ymin)*height;
        float px2 = (residue[res_pair[k].r2].x-xmin)/(xmax-xmin)*width;
        float py2 = (residue[res_pair[k].r2].y-ymin)/(ymax-ymin)*height;
        printf("newpath %f %f moveto %f %f lineto stroke\n", px1, py1, px2, py2);
      }
     
      printf("showpage\n");
    }
    Merci à vous

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Si ton but est d'écrire dans un fichier, tu t'y prends mal, car la fonction printf() sert à faire de l'affichage sur le flux de sortie standard stdout. Tu dois ouvrir un fichier texte en écriture:
    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
    16
    17
    18
    19
    FILE *fp = NULL;
    int width = 1000, height = 1000;
     
    /* ... */
     
    fp = fopen("nom_du_fichier.eps", "r");
    if (NULL != fp)
    {
        /* Ici, on écrit dans le fichier */
        fprintf(fp, "%%!PS-Adobe-2.0 EPSF-2.0\n"
    	 "%%%%BoundingBox: 0 0 %d %d\n\n", 
    	 width, height);
     
        fclose(fp), fp = NULL;
    }
    else
    {
        fprintf(stderr, "Impossible d'ouvrir le fichier!\n");
    }
    La fonction printf() est ici remplacée par le pointeur de fprintf().

    EDIT: Une autre possibilité est d'utiliser ton programme tel quel est de rediriger le flux de sortie standard sur le fichier voulu.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre expérimenté Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Par défaut
    Tu ne fais que des printf, qui affiche des chaines de caracteres dans la sortie standard, c'est a dire le terminal. C'est normal que le programme ne fasse qu'afficher dans le terminal !

    Pour ecrire quelquechose dans un fichier, il faut l'ouvrir (avec le nom que tu veux...que ce soit toto.txt, toto.eps, ou monnomdefichieramoi.monextensionfavorite) , puis écrire dedans.

    Je te conseille de faire un tour sur la FAQ C de Developpez.com section gestion de fichiers

    EDIT : grillé

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Par défaut
    J'ai effectivement ajouté du fprintf et un argument à mon appel de fonction .


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2009, 18h43
  2. Réponses: 17
    Dernier message: 07/05/2008, 10h16
  3. sortie de fichier sur windows
    Par soria_t dans le forum C
    Réponses: 1
    Dernier message: 16/03/2007, 10h56
  4. les entrées sorties sur fichiers
    Par snakemetalgear dans le forum C
    Réponses: 25
    Dernier message: 09/11/2006, 10h45
  5. Réponses: 25
    Dernier message: 05/07/2006, 16h46

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