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 :

Creer un fichier dans une boucle


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Creer un fichier dans une boucle
    Bonjour, je souhaiterais creer different fichier a chaque tour de boucle, pour cela j'utilise donc la fonction sprintf. Cependant une erreur se produit lorsque mes fichiers se creer j'ai l'impression qu'ils sont bug. De plus l'executable ne creer pas les memes fichiers quand je suis sur linux ou sur MacOs. Sur Linux on me signale apres execution le message munmap_chunk(): invalid pointer . Abandon (core dumped). Ici je souheterais resoudre une equa diff avec different pas, pour chaque pas (noté h dans mon code) je souhaiterais un fichier different. Or je ce comprend pas pourquoi par exemple à partir de N=100, le temps (ma premiere colonne) s'affiche en 2 fois à chaque tour... (cf piece jointe)

    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
    int main(void){
     
            //Condition Initial
        double t0=0.0 , tmax=25;
        char nom1[20];
        char nom2[20];
        int ValeurdeN[4]={50,100,200,400};  //on fait varier le pas.
        // Ecriture de l'erreur
        FILE*eulerErr=fopen("euler_err.txt","w+");
        FILE*exact=fopen("val_exacte.txt","w+");
     
        if (eulerErr==NULL||exact==NULL){
                   puts("ERREUR a l'ouverture. Fin du programme");
                   return 0;
               }
        for (int i=0; i<4; i++){
            er1=0;
            h=tmax/ValeurdeN[i];
     
                sprintf(nom1,"val_euler_N=%d.txt",ValeurdeN[i]);
                sprintf(nom2,"val_rk2_N=%d.txt",ValeurdeN[i]);
                FILE*euler=fopen(nom1,"w+");
                FILE*rk=fopen(nom2,"w+");
                if (rk==NULL||euler==NULL ){
                    puts("ERREUR a l'ouverture. Fin du programme");
                    return 0;
                }
                // Valeur inital
                t=t0; v1=v0; vth=vtheo(t,30); v2=v0;
     
                for(int p=0; p<=ValeurdeN[i]; p++){
                    // Ecriture des fichiers
                    fprintf(exact,"%lf\t%lf\n",t,vth);
                    fprintf(euler,"%lf\t%lf\n",t,v1);
                    fprintf(rk,"%lf\t%lf\n",t,v2);
                    //Euleur
                    v1=....
                    // Runge-Kutta ordre 2 Euler modifie
                    vt=...
                    v2=....
     
                    //Commun à toute les methodes
                    t=t+h;
                    vth=....
                    if (er1<fabs(v1-vth)) er1=fabs(v1-vth);
                }
                fprintf(eulerErr,"%f\t%f\n",h,er1);
                fclose(exact);fclose(euler);fclose(rk);
     
        }
    }
    Si quelqu'un pourrez m'éclairer je lui serait tres reconnaissant
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour.

    J'ai survolé ton code, de ce que je vois er1 et h sont définis mais pas déclarés, mais surtout l'instruction fclose(exact) est dans la 1ère boucle alors que la création FILE*exact=fopen("val_exacte.txt","w+"); est en dehors, donc à la deuxième itération fclose() va agir sur un fichier déjà fermé.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    oui j'ai enleve la delcaration de mes variables quand j'ai poste par megarde mais ils sont bien declaré pas de probleme. Et Merci je corrige ca et plus de problème sur mes fichiers N=50 merci !!

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

Discussions similaires

  1. ouverture fichier dans une boucle
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2008, 18h52
  2. Enregistrer des fichiers dans une boucle
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/04/2008, 13h17
  3. [Fortran 77] Renommer un fichier dans une boucle
    Par mehdi_oca dans le forum Fortran
    Réponses: 3
    Dernier message: 04/01/2008, 14h38
  4. Renommer un fichier dans une boucle
    Par Thomas Carrere dans le forum C
    Réponses: 5
    Dernier message: 05/05/2006, 18h20
  5. [FLASH MX] Créer un objet dans une boucle
    Par alexfrere dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 30/04/2006, 01h35

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