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 :

Segmentation Fault C


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Par défaut Segmentation Fault C
    Bonjour,


    j'ai un probleme quand j'essaie de lire ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char *buffer;
    printf("tapez quelques chose")
    scanf("%s", buffer):
    des que je tape quelques chose pour la lecture j'ai cette erreur ''Segmentation default''

    pourtant ça travaille tres bien sur mon premier pc mais pas sur le deuxieme, je suis sur ubuntu avec gcc/

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Erreur habituelle due à la confusion entre pointeur et tableau :

    - un pointeur sert à stocker une adresse, pas autre chose (et notamment pas une chaine de caractères)
    - un tableau sert à stocker une collection d'éléments tous du même type.

    Ici il s'agit de stocker un ensemble de char. On a donc besoin d'un tableau, pas d'un pointeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char buffer[256]; // mettre une dimension suffisamment 
                      // grande pour stocker la chaine + le zéro terminal.
    printf("tapez quelques chose")
    scanf("%s", buffer);
    La confusion vient du fait, et on le voit bien ici, que l'identificateur d'un tableau (comme dans le scanf) représente l'adresse du premier élément du tableau (donc est dans le cas présent du type char *) sauf dans les cas où il est opérande des opérateurs unaires sizeof ou & (adresse de).

    Cela ne signifie pas qu'un tableau et un pointeur sont interchangeables comme mentionné au début de ce post.

Discussions similaires

  1. Pb segmentation fault avec glutinit()
    Par pipistrelle dans le forum GLUT
    Réponses: 2
    Dernier message: 17/11/2004, 23h17
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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