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 :

erreur avec fprintf(f,"%s", codePolysInput.GetData());


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Par défaut erreur avec fprintf(f,"%s", codePolysInput.GetData());
    J'ai le code:
    *************
    FILE *f=fopen(inputFileName.GetData(),"w");
    fprintf(f,"%s", codePolysInput.GetData());
    *******************

    c'est un program en C++ qui est appele pr un site internet en PHP.Je ne sait pas c koi l'erreuer.il mis seulement:
    ***************
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.....
    **************
    le fichier ou on ecri est :codePolysInput.GetData())=
    /home/stage/WEB/temporaire/67d1e8910f4bf8feb5820a76117ae6b4.input

    tout le monde a le droit d'ecrire et de lire dans le repertoire temporaire.

    Je ne sait pas c koi l'erreure. en effet on a transferer le programe sur une autre machine et dans celle du debut il n 'y avait pas ce probleme

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut
    Ce code il est compilé ou interprété ?

    Si le code est interprété, il faut s'assurer que l'interpréteur est présent sur la machine censée exécuter le code. S'il est compilé, comment l'utilises-tu avec php ?

    Comment sais-tu que le bug se trouve dans ces 2 lignes ?

    En supposant que le problème soit localisé ici et si tu peux modifier le code, essaie d'afficher des infos sur ce qui se passe, par exemple en remplaçant tes 2 lignes par les lignes suivantes
    • si tu peux afficher des informations avec printf et perror
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
       
      {
       int n = 0;
       FILE *f=fopen(inputFileName.GetData(),"w");
       if (f) {
        n = fprintf(f,"%s", codePolysInput.GetData());
        printf("Nombre d'octets ecrits : %d\n", n);
        /* ... */
        fclose(f);
       }
       else perror("Erreur de fopen");
      }
      // Quelle est la sortie console après exécution ?
    • si tu ne peux pas afficher d'informations avec printf ni perror
      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
       
      {
       int n = 0;
       FILE *logfile("fichier_log.txt","w"); // arrange-toi pour que fichier_log.txt soit accessible en écriture
       if (logfile) {
        FILE *f=fopen(inputFileName.GetData(),"w");
        if (f) {
         n = fprintf(f,"%s", codePolysInput.GetData());
         fprintf(logfile,"Nombre d'octets ecrits : %d\n", n);
         /* ... */
         fclose(f);
        }
        else fprintf(logfile,"erreur de fopen\n");
        fclose(logfile);
       }
      }
      // Quel est le contenu du fichier fichier_log.txt après exécution ?

    S'il y a erreur de fopen, alors le problème est soit au niveau des permissions (ou bien d'un quota ou autre restriction d'accès aux ressources), soit au niveau de codePolysInput.GetData()
    S'il n'y a pas d'erreur de fopen et que le nombre d'octets écrits est 0, alors le problème est au niveau de codePolysInput.GetData()

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Par défaut
    mon code est:
    ***************
    ////////////////////////B
    fichfil=fopen("said","a+");
    fprintf(fichfil,"\nGestionPolys::StartPolys on est justa avant le FILE *f=fopen(inputFileName.GetData(),; ");
    fclose(fichfil);
    ////////////////////////E
    FILE *f=fopen(inputFileName.GetData(),"w");
    ////////////////////////B
    fichfil=fopen("said","a+");
    fprintf(fichfil,"\nGestionPolys::StartPolys on est justa apres le FILE *f=fopen(inputFileName.GetData(),;%s ",inputFileName.GetData());
    fclose(fichfil);
    ////////////////////////E
    fprintf(f,"%s", codePolysInput.GetData());
    ////////////////////////B
    fichfil=fopen("said","a+");
    fprintf(fichfil,"\nGestionPolys::StartPolys on est justa apres le fprintf(f,%s, codePolysInput.GetData()); ");
    fclose(fichfil);
    ////////////////////////E
    fclose(f);
    *********************************

    et dans le fichier "said" je trouve (les dernier ligne):
    **************
    GestionPolys::StartPolys on est justa avant le FILE *f=fopen(inputFileName.GetData(),;
    GestionPolys::StartPolys on est justa apres le FILE *f=fopen(inputFileName.GetData(),; /home/stage/WEB/polymaker/temporaire/67d1e8910f4bf8feb5820a76117ae6b4.input
    ******************

    mon code de C++ est compile avec un makefile.
    ce n'est pamoi qui a programe,en tout cas le php passe des valeure au programe de C++ et celui ci les utilise pour crée un fichier (etc...)
    + il n'y a pas dans le fichier said la ligne :
    GestionPolys::StartPolys on est justa apres le fprintf(f,%s, codePolysInput.GetData());
    ce qui veut dire que l'ereur est dans le fprintf.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut
    Je te conseille de tester la valeur du handle avant de l'utiliser (comme j'ai fait dans mon exemple) car fclose(0) provoque une erreur.

    Néanmoins, s'il t'est possible d'utiliser les fonctions standards C++ (les streams notamment), je te conseille de le faire.

    L'écriture dans les fichiers semble se faire normalement. En revanche, inputFileName.GetData() et codePolysInput.GetData() retournent probablement 0 ou une autre valeur incorrecte.

    Juste pour être sûr, vérifie la valeur inputFileName.GetData() et codePolysInput.GetData() avant de les utiliser.

    Il faut voir au niveau de l'utilisation de ces 2 objets (sont-ils initialisés et manipulés correctement) ou carrément dans la fonction GetData()

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 113
    Par défaut
    non ils ne sont pa vide.car j'ai ecrir c'est valeur dans mon fichier de test "said".
    ça l'aire complique cette ereure je doit me concentrai plus.ça doit etre un truc de droit ou de serveur peut etre

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 90
    Par défaut
    je n'avais pas bien vu.

    Quelle est la valeur de f ? C'est important de savoir que cette valeur est non nulle.

    As-tu essayé de créer manuellement un fichier "/home/stage/WEB/polymaker/temporaire/67d1e8910f4bf8feb5820a76117ae6b4.input" et de l'utiliser dans le programme ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    je voudrais pas parraitre rabat joie, c'est du tout l'objectif, mais freakfm, tu devrais faire gaffe a ton ortographe !!! ca joue sur la comprenhension de tes écrits...

Discussions similaires

  1. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59

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