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++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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