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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Par défaut Erreur de segmentation
    Bonjour à tous, je suis un débutant en C complet...

    Voilà, j'essaie de créer un fichier texte sur une clé USB, et il me renvoie l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erreur de segmentation
    Mon code est tout simple:
    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
     
    #include <stdio.h>
     
    #include <stdlib.h>
     
    #include <linux/usbdevice_fs.h>
     
     
     
     
     
    int main(void)
     
    {
     
    	FILE *test;
     
    	test=fopen("/proc/bus/usb/004/004/test.txt","w");
     
    	fclose(test);
     
                   return 0 ;
     
     
     
     
     
    }
    Où est l'erreur dans ma conception de ce bout de code??
    Merci d'avance
    F.

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Flophx
    Où est l'erreur dans ma conception de ce bout de code??
    Tu ne teste pas le retour de fopen. Si l'ouverture echoue tu appelle fclose avec un pointeur NULL.

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Par défaut
    je fais ca:
    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
     
    #include <stdio.h>
     
    #include <stdlib.h>
     
    #include <linux/usbdevice_fs.h>
     
     
     
     
     
    int main(void)
     
    {
     
    	FILE *test;
     
    	test=fopen("/proc/bus/usb/004/004/test.txt","w");
    if(test==null){
    printf("erreur d'ouverture de fichier); }
    else{
     
    	fclose(test);
    }
     
                   return 0 ;
     
     
     
     
     
    }
    Mais à présent il ne compile plus.....

  4. #4
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    cogite un petit peu

    manque un guillemet à la fin du printf

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Par défaut
    Je l'avais oublié, en revanche je m'explique pas pourquoi il me renvoie ca comme erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ./main.c: In function ‘main’:
    ./main.c:10: error: ‘null’ undeclared (first use in this function)
    ./main.c:10: error: (Each undeclared identifier is reported only once
    ./main.c:10: error: for each function it appears in.)
    Il ne connait pas null ??(je fais pas mal de java, ca peut expliquer pour quoi je suis surpris et pas vous)

  6. #6
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    NULL au lieu de null me semble t'il

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Flophx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erreur de segmentation
    Où est l'erreur dans ma conception de ce bout de code??
    Toute tentative d'ouverture de fichier peut échouer. fopen() renvoi alors NULL. Si tu passes NULL à fclose(), le comportement est indéfini.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
       FILE *fp = fopen("/proc/bus/usb/004/004/test.txt", "w");
     
       if (fp != NULL)
       {
          fclose(fp);
       }
       return 0 ;
    }

  8. #8
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Par défaut
    Je suis d'accord sur le fait que l'ouverture puisse échouer;
    néanmoins si replace le nom du fichier par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /home/florian/Desktop/text.txt
    là il me le crée;
    pour moi c'est donc qu'on ne peut pas appeler directement le port USB

  9. #9
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Euh c'est un probleme de linux, pas de C
    C'est pas le fopen qui merde c'est juste que tu peux pas ouvrir ce fichier en ecriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -l /proc/bus/usb/004/004/test.txt
    te donnerait les droits d'acces à ce fichier

    Ca me semble etrange d'acceder à la clef usb par /proc, normalement les peripheriques contenant un systeme de fichier doivent etre mountés quelque part dans le systeme de fichier comme /mnt ou un dossier personnel, mais pas un dossier aussi special que /proc

  10. #10
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Par défaut
    Le truc, c'est que je veux que justement il m ele crée le fichier, pas en utiliser un déjà présent!!
    Sinon pour l'accès au port USB, je n'ai trouvé que cette manière là pour écrire le chemin....
    Mais je suis preneur de toute autre idée.....

  11. #11
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    En général les périphériques monté sous linux sont dans /mnt ou /media il est pas possible logiquement de passer par les dossier /proc ou /dev.
    Donc regarde quand tu monte ta clé usb sur ton ordi si il n'y a pas un dossier dans /media ou /mnt

  12. #12
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Flophx
    Le truc, c'est que je veux que justement il m ele crée le fichier, pas en utiliser un déjà présent!!
    Sinon pour l'accès au port USB, je n'ai trouvé que cette manière là pour écrire le chemin....
    Mais je suis preneur de toute autre idée.....
    Pour avoir plus d'info lorsque fopen renvoi NULL, tu peux utiliser perror

+ 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