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 de segmentation


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut Erreur de segmentation
    Bonjour à tous, voilà j'ai créé il y de cela un mois un programme permettant de créé une liste de fichier à des dates différentes.
    Tout fonctionnais bien. Mais voilà qu'aujourd'hui je veux me resservir de ce programme et qu'il ne fonctionne plus. Il compile et lors du lancement m'annonce: " Erreur de segmentation" !!!

    Je ne vois pas d'où cela vient, entre nous cela me prend même la tête alors si on pouvait m'aider ce serait super.

    Voici mon programme:

    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
    #include <stdio.h>
    #include <time.h>
     
    int main()
    {
       FILE *sortie;
       int i;
       char fic[40];
     
       for(i=0; i<100; i++)
       {
          sprintf(fic,"/home/denis/Stage/save/fic1_%d",i);
          sortie=fopen(fic,"w");
          fclose(sortie);
          sprintf(fic,"/home/denis/Stage/save/fic2_%d";i);
          sortie=fopen(fic,"w");
          fclose(sortie);
     
          system("date -s yesterday");
       }
       printf("Fin du programme");
    }
    Voilà, je tiens également à signaler à ceux qui souhaitent tester ce programme chez eux qu'il est indispensable de lancer se programme en sudo à cause du changement d'heure.

    Merci à tous pour l'aide que vous allez, je l'èspère, m'apporter

    yansei

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    euh.. pourquoi veux-tu changer la date du système ??? (100 fois de suite en plus !!!)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    C'est dans le but de créer des fichiers à des dates différentes pour un projet.

    yansei

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Salut,

    bon pour commencer la prochaine fois pourrais tu utiliser les balise code quand tu post.

    sinon le gros defaut que je vois c'est que tu teste pas le retour de tes fopen, or si celui ci echoue ton pointeur sortie se retrouve a NULL et faire un fclose sur un pointeur NULL ca plante, voila je pense qu'au premier fichier /home/denis/Stage/save/fic1_x qu il ne trouve pas ca pete.

    voila

    [edit] en fait ton path existe bien pour creer les fichiers au bon endroit ?

  5. #5
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par yansei Voir le message
    Bonjour à tous, voilà j'ai créé il y de cela un mois un programme permettant de créé une liste de fichier à des dates différentes.
    Tout fonctionnais bien. Mais voilà qu'aujourd'hui je veux me resservir de ce programme et qu'il ne fonctionne plus. Il compile et lors du lancement m'annonce: " Erreur de segmentation" !!!

    Je ne vois pas d'où cela vient, entre nous cela me prend même la tête alors si on pouvait m'aider ce serait super.

    Voici mon programme:
    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
     
    #include <stdio.h>
    #include <time.h>
     
    int main()
    {
    FILE *sortie;
    int i;
    char fic[40];
     
    for(i=0; i<100; i++)
    {
    sprintf(fic,"/home/denis/Stage/save/fic1_%d",i);
    sortie=fopen(fic,"w");
    fclose(sortie);
    sprintf(fic,"/home/denis/Stage/save/fic2_%d";i);
    sortie=fopen(fic,"w");
    fclose(sortie);
     
    system("date -s yesterday");
    }
    printf("Fin du programme");
    }
    Voilà, je tiens également à signaler à ceux qui souhaitent tester ce programme chez eux qu'il est indispensable de lancer se programme en sudo à cause du changement d'heure.

    Merci à tous pour l'aide que vous allez, je l'èspère, m'apporter

    yansei
    La taille 40 est dépassé après 9 !!!! il faut faire place au caractère '\0'

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    Bon je viens d'augmenter le fic[40] à fic[100] (oui c'est peut-être beaucoup mais cela ne coute rien de voir les choses en grand ), mais cela ne change rien...

    Pour le reste, je vais tester mais fopen et sinon pour répondre à la question précédemment posé, mon path existe bien.

    yansei

  7. #7
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par BainE Voir le message
    Salut,

    bon pour commencer la prochaine fois pourrais tu utiliser les balise code quand tu post.

    sinon le gros defaut que je vois c'est que tu teste pas le retour de tes fopen, or si celui ci echoue ton pointeur sortie se retrouve a NULL et faire un fclose sur un pointeur NULL ca plante, voila je pense qu'au premier fichier /home/denis/Stage/save/fic1_x qu il ne trouve pas ca pete.

    voila

    [edit] en fait ton path existe bien pour creer les fichiers au bon endroit ?
    Non, je pense pas, fclose(NULL) ne fait rien, elle n'a pas un effet bien définie, mais elle ne crache pas !!!!

  8. #8
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    L'erreur vient de votre PATH, j'ai testé le programme comme ça :
    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
     
    #include <stdio.h>
    #include <time.h>
     
    int main(void)
    {
    FILE *sortie;
    int i;
    char fic[40];
     
    for(i=0; i<100; i++)
    {
    sprintf(fic,"fic1_%d",i);
    sortie=fopen(fic,"w");
    fclose(sortie);
    sprintf(fic,"fic2_%d",i);
    sortie=fopen(fic,"w");
    fclose(sortie);
     
    system("date ");
    }
    printf("Fin du programme");
     
    return 0;
    }
    !!! et ça marche !!!

  9. #9
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    si ca plante
    et faut sortie ce system( date -s ) de la boucle, on change pas 100 fois l heure systeme, surtout pour la mettre 100 fois a la meme valeur

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    Merci cmoibal.

    En effet, je viens de créer le document save et là les fichiers sont créés sans soucis.

    Chose pour laquel je m'excuse car j'étais persuadé que si un document n'existait pas, ubuntu se chargeait de le créer....

    Merci en tout cas à tous pour m'avoir répondu aussi rapidement.

    Je fait des test pour vérifier qu'il n'y a plus aucune erreur (notament que la date de fichier est bien différente

  11. #11
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    en fait fopen crée le fichier s'il n'existe pas mais pas les repertoire parents pour arriver jusqu a lui.

    Voila, bonne continuation

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Par défaut
    Bon tout fonctionne, je vous remercie encore, et m'excuse d'avoir pensé, à mal, que ubuntu créé les dossiers quand ils n'existaient pas...

    Passer tous une bonne journée
    Bien amicalement
    yansei

  13. #13
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par cmoibal Voir le message
    Non, je pense pas, fclose(NULL) ne fait rien, elle n'a pas un effet bien définie, mais elle ne crache pas !!!!
    Euh, non, il me semble bien que fclose(NULL) est indéfini, contrairement à free(NULL).

    Sous l'implémentation Microsoft récente, qui est conforme à C90, fclose(NULL) crashe (invalid parameter handler).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Euh, non, il me semble bien que fclose(NULL) est indéfini, contrairement à free(NULL).

    Sous l'implémentation Microsoft récente, qui est conforme à C90, fclose(NULL) crashe (invalid parameter handler).
    Oui, j'ai fait les tests
    Merci,Médinoc , je confirme...

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

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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