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 :

petit problème d'affichage


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut petit problème d'affichage
    Bonjour,

    J'essaie d'afficher un fichier en sortie . Je reçois beaucoup troop de messages d'erreurs. Voilà un bout du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void afficher_paires_csv(char *str_file)
    {
      int k;
      FILE* file;
     
      file = fopen(str_file,"w");
     
      fprintf(file, "Ecriture du fichier CSV\n");
      for (k = 0; k < MAX_PAIRS; k++)
    ...
      (dans le main)
    afficher_paires_csv()
    Pouvez vous m'aider

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par soria_t
    Pouvez vous m'aider
    Non, car tu ne joues pas le jeu. Tu parles de messages d'erreur sans nous dire lesquels, tu postes quelques miserables lignes de code ou l'ecriture dans le fichier n'apparait pas, et on doit deviner que ton afficher_paires_csv() est l'appel a la fonction (donc faux, puisque le prototype exige un argument).

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Parce que je retravaillais dessus et que je ne voulais pas surchargé le message.
    ( Ne pas mettre plus d'une dizaine de ligne.) J'ai réussi à récupérer la plupart des erreurs sauf la dernière dans les déclarations.

    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
     
    void afficher_paires_csv(char *str_file)
    {
      int k;
      FILE* file;
     
      file = fopen(str_file,"w");
     
      fprintf(file, "Ecriture du fichier CSV\n");
      for (k = 0; k < MAX_PAIRS; k++)
        printf("%f, %c, %d, %.3s, %f, %f, %f, %c, %d, %.3s, %f, %f, %f\n", res_pair[k].dist, res_pair[k].r1->chain_id, res_pair[k].r1->res_seq, res_pair[k].r1->name, res_pair[k].r1->x, res_pair[k].r1->y, res_pair[k].r1->z, res_pair[k].r2->chain_id, res_pair[k].r2->res_seq, res_pair[k].r2->name, res_pair[k].r2->x, res_pair[k].r2->y, res_pair[k].r2->z);
    }
     
    int main(int argc, char **argv)
    {
      if (argc != 3) {
        fprintf(stderr, "Utilisation : %s fichier_pdb methode_calcul_centres\n", argv[0]);
        exit(1);
      }
      methode_calcul_centres = atoi(argv[2]);
      if (methode_calcul_centres <= 0 || methode_calcul_centres > 3) {
        fprintf(stderr, "Methodes de calcul des centres des residus: entre 1 et 3\n");
        exit(1);
      }
      fprintf(stderr, "Lecture du fichier PDB : %s\n", argv[1]);
      lire_pdb(argv[1]);
      fprintf(stderr, "Construction des résidus\n");
      //afficher_atomes();
      construire_residus();
      fprintf(stderr, "Construction des paires\n");
      //afficher_residus();
      construire_paires();
      //afficher_paires();
      afficher_paires_csv(argv []);
     
      return 0;
    }
    la déclaration se fait à part:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #define MAX_PAIRS 100
     
    void lire_pdb(char *nom_fichier);
    void afficher_atomes(void);
    void construire_residus(void);
    void afficher_residus(void);
    void construire_paires(void);
    void afficher_paires(void);
    void afficher_paires_csv(char *str_file);

    Voici le code d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     gcc -Wall -lm pdb.c 
    pdb.c: In function ‘main’:
    pdb.c:244: error: expected expression before ‘]’ token

  4. #4
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par soria_t
    Je reçois beaucoup troop de messages d'erreurs.
    Quels sont-ils?
    edit: OK, c'est bon.

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    J'ai résolu la plupart d'entre eux sauf le dernier. Que je ne comprend pas tout à fait.

  6. #6
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Bon j'ai fait une petite modif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    afficher_paires_csv(argv[2])
    En effet ce que je veux c'est pouvoir l'afficher sur un fichier que je puisse sauvegarder et non sur la sortie du terminal.
    Mais pour ça, il faut que je modifie la première partie du code que j'ai déjà posté. Et je n'y arrive pas très bien.

  7. #7
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par soria_t
    J'ai résolu la plupart d'entre eux sauf le dernier. Que je ne comprend pas tout à fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    afficher_paires_csv(argv[]);
    Il faut mettre un indice dans les crochets.
    edit: Correction vue

  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par soria_t
    Mais pour ça, il faut que je modifie la première partie du code que j'ai déjà posté. Et je n'y arrive pas très bien.
    ??? Tu remplaces simplement ton printf() par un fprintf(file, "...", ...) (et verifie que fopen() n'a pas echoue).

  9. #9
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Je sais que si je mets deux arguments à argv, il faut que je modifie quelque chose dans mon code d'origine pour obtenir une sortie sur fichier séparé.

    Le problème est que pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(file, "Ecriture du fichier CSV\n", ...)
    Je ne réussis pas à avoir quelque chose de correct pour l'argument 2

    Quand à mettre fprintf ce n'est pas ce que j'ai déjà fait ??

  10. #10
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    En fait mon compilateur me renvoie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    gcc -Wall -lm pdb.c 
    pdb.c: In function ‘afficher_paires_csv’:
    pdb.c:241: warning: too many arguments for format
    La ligne 241 étant celle-là
    fprintf(file, "Ecriture du fichier CSV\n",str_file );

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    et oui il n'y a pas de format pour le nom..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fprintf(file, "Ecriture du fichier CSV %s\n",str_file );

  12. #12
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Pourrais tu être plus précis, je ne comprend pas ce que tu veux dire ?

  13. #13
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 168
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par soria_t
    Bonjour,

    J'essaie d'afficher un fichier en sortie . Je reçois beaucoup troop de messages d'erreurs. Voilà un bout du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void afficher_paires_csv(char *str_file)
    {
      int k;
      FILE* file;
     
      file = fopen(str_file,"w");
     
      fprintf(file, "Ecriture du fichier CSV\n");
      for (k = 0; k < MAX_PAIRS; k++)
    ...
      (dans le main)
    afficher_paires_csv()
    Pouvez vous m'aider
    bonjour,

    moi aussi je travaille sur la conversion d'un fichier CVS

    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
     
    char	*p_chaine = "11;22;33;44;55;66;77;88;99";
    char  *p_caract = ";";
    char        *p_decoupe      = NULL;
     
    printf ( "Appel chaine %s", p_chaine );
     
    /* On decoupe la  chaine taille */
    p_decoupe = strtok ( p_chaine , p_caract );
    if( p_decoupe == NULL )
    {
     printf( "La chaine ne contient pas de %s", p_caract );
    }
     
    while (p_decoupe != NULL)
    {
     printf ("\nsous chaine = %s",p_decoupe);
     p_decoupe = strtok (NULL , p_caract );
    }
    c'est seulement un exemple qui découpe.

    bon courage.

    turbo_chess

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par soria_t
    Pourrais tu être plus précis, je ne comprend pas ce que tu veux dire ?
    Simplement que d'après ton code tu voulais imprimer le nom du fichier (str_file) à la fin de la chaîne "Ecriture du fichier CSV".

    Mais tu n'avais pas mis de format pour l'écriture (%s pour une chaîne de caractères), juste le paramètre str_file.

    Ce qui fait que le compilateur se plaignait que tu voulais faire un printf sans paramètres (puisque pas de format % quelque chose) , et que tu avais quand même un paramètre, d'où le diagnostic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pdb.c:241: warning: too many arguments for format
    Et @turbo_chess :

    c'est pas CVS mais CSV ......

    La dyslexie dans ce domaine, ça peut être grave.... Car les 2 existent.....

  15. #15
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 168
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par souviron34

    Et @turbo_chess :

    c'est pas CVS mais CSV ......

    La dyslexie dans ce domaine, ça peut être grave.... Car les 2 existent.....
    bonjour,

    je suis devenu amnésique

    merci

    turbo_chess

  16. #16
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Je suis bornée mais j'ai finit par trouver.

    Mintenent le problème est qu'en sortie j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    a.out 1D2Q.pdb 1
    Lecture du fichier PDB : 1D2Q.pdb
    Construction des résidus
    Construction des paires
    Segmentation fault (core dumped)

  17. #17
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    J'imagine que c'est parce que je n'ai pas trouvée le moyen de mettre un nom de fichier de sortie ?
    Si quelqu'un veut bien confirmer ça m'iderais à trouver la solution.

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    non ça veut simplement dire que tu vas essayer d'accèder (ou une fonction que tu appelles) à une zone mémoire à laquelle tu n'as pas accès. Mauvais paramètre, chaîne non allouée, fihcier non ouvert, etc etc...

    On ne peut en dire plus en l'état sans la partie du code concernée...

  19. #19
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    J'ai finit par trouver effectivement il me manquait un fprintf .
    Merci à tous

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

Discussions similaires

  1. petit problème d'affichage
    Par Agrapheuse dans le forum Applets
    Réponses: 1
    Dernier message: 19/04/2008, 16h52
  2. Petit problème d'affichage
    Par dan_lizhot dans le forum Débuter
    Réponses: 0
    Dernier message: 01/02/2008, 04h56
  3. Petit Problème d'Affichage
    Par I_Will_Be_back dans le forum C
    Réponses: 8
    Dernier message: 10/11/2007, 15h26
  4. [AJAX] Affichage en Ajax
    Par RichardP dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/05/2007, 16h02
  5. petit problème d'affichage sur un datagridview
    Par boss_gama dans le forum C#
    Réponses: 5
    Dernier message: 01/05/2007, 21h42

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