Forum Programmation.c++ mes fichiers ne s'ouvrent pas avec fopen

Posté par  .
Étiquettes : aucune
0
29
juil.
2005
bonjour,
je me suis mis a kdevelop (avant visualC++),
et j'ai des petits problemes d'adaptation.
Voila, je n'ai pas de problemes de compilation, mais quand j'execute, rien ne s'est passe dans les fichiers ouverts, ou alors ils ne sont pas créés, alors que ça marche sous visual.....je suis perdu, aidez moi svp.
Aussi, flushall() n'est pas inclus dans stdio.h , ou est-il?

merci beaucoup de m'aider
  • # et le code ?

    Posté par  (site web personnel) . Évalué à 2.

    avec le code précis de ce tu tentes de faire on comprendrait p'tetre mieux ta boulette
  • # le code

    Posté par  . Évalué à 1.

    excuser du peu de detail.
    genre un simple programme d'essai, qui fonctionne su VC++.

    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif

    #include <iostream>
    #include <cstdlib>

    using namespace std;

    int main(void)
    {
    FILE *fich=fopen("test1","w");
    fprintf(fich,"ca roule");
    fclose(fich);

    return EXIT_SUCCESS;
    }

    Pas de probleme pour construire mais le fichier test1 n'est pas créé lors de l'execution.
    C'est louche non?
    • [^] # Re: le code

      Posté par  . Évalué à 1.

      Chez moi ça marche. gcc 3.3.5 et gcc 4.0.1.

      $ g++ test.cpp
      $ ./a.out
      $ cat test1
      ca roule
      • [^] # Re: le code

        Posté par  (site web personnel) . Évalué à 0.

        le flushall existe souscette forme :
        int fflush (FILE *flux);

        ps : pense a installer les man pages :
        urpmi man-pages-fr

        après y a plus qu'a tenter :
        man 3 fopen
        man 3 fflush

        ps2: si tu a mis la completion tu peux même utiliser la tabulation pour compléter les nom de fonction quand tu tape la ligne de commande man x ...
        • [^] # Re: le code

          Posté par  . Évalué à 1.

          merci Rap pour ton info sur le flushall, je vais me faire une fonction pour pas changer mon code.
          Et je vais installer le man pour m'instruire.
      • [^] # Re: le code

        Posté par  . Évalué à 1.

        merci med, d'avoir test chez toi,
        Le code est bon logiquement, je dois avoir un probleme de compilateur, ou de make. Vous pensez a quoi?
        • [^] # Re: le code

          Posté par  (site web personnel) . Évalué à 1.

          je pense que tu devrais faire comme med (tenter la compilation en console sans kdevelop) et meme utiliser la ligne suivante pour compiler:
          g++ -Wall test.cpp
          pour afficher tout les warnings.

          Et je pense aussi que tu devrais faire soit du C soit du C++,
          mais pas ce que tu est en train de montrer. fopen, fprintf, ... sont des fonctions du C, Le C++ a des objets pour cela (istream, ostream et iostream pour ne citer qu'eux).

          Sinon amha ton 'bug' est surement lié soit:
          * au droit d'acces sur le repertoire d'execution de ton appli
          * a la difference entre la ou tu crois qu'est lancé ton logiciel et la ou
          il est vraiement lancé.
    • [^] # Re: le code

      Posté par  . Évalué à 1.

      Salut,

      fopen renvoie NULL en cas d'echec. Tu devrais verifier ton fich. Si fich est NULL, il y a 9 chances sur 10 que ton fprintf genere un segfault. Sinon, si fich n'est pas NULL, le fopen a reussi a ouvrir ton fichier, et il n'y a (presque!) aucune raison que l'ecriture echoue.

      Sinon, verifie aussi que tu cherches bien ton fichier "test1" au bon endroit: comme tu utilises un chemin relatif (./), ton fichier sera cree la ou ton executable se sera execute. Sous VisualC++ par exemple, il s'execute dans les repertoires Debug ou Release. Mefie toi donc qu'il ne soit pas ailleurs. Sinon, utilises un chemin absolu (/tmp par exemple).

      Bon courage,

      Xavier

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.