STRUCT: segmentation fault

Tutorials.at
Verfügbare Informationen zu "STRUCT: segmentation fault"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: detewe89 - Dirty Oerty - wirthi
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 3
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: STRUCT: segmentation fault
  • Letzte Antwort: vor 15 Jahren, 3 Monaten, 14 Tagen, 12 Stunden, 39 Minuten
  • Alle Beiträge und Antworten zu "STRUCT: segmentation fault"

    Re: STRUCT: segmentation fault

    detewe89 - 12.12.2007, 23:17

    STRUCT: segmentation fault
    Hallo,

    ich hab jetzt mein erstes Programm mit einem struct geschrieben, und prompt stürzt es aus einem für mich unerklärlichen Grund ab:

    Code: #include <stdio.h>

    struct kollege
    {
       char *name;
       char *vorname;
       char *stadt;
       char *telefon;
    };

    int main(void)
    {
       struct kollege kollegen[5];
       int dec, i;
       
       printf("Wieviele Kollegen (1-5)? ");
       scanf("%d", &dec);
       
       for (i = 0; i < dec; i++)
       {
          printf("Name? ");
          scanf("%s", kollegen[i].name);
          
          printf("Vorname? ");
          scanf("%s", kollegen[i].vorname);
          
          printf("Stadt? ");
          scanf("%s", kollegen[i].stadt);
          
          printf("Telefonnr.? ");
          scanf("%s", kollegen[i].telefon);
       }
       
       printf("Kollegen erfolgreich eingelesen, Programm fertig!\n");
       
       return 0;
    }

    Immer, nachdem ich die Stadt eingegeben habe, kommt die Meldung

    "Segmentation fault (core dumped)"

    Sicher wisst ihr über die richtige Verwendung von Structs bescheid?


    Danke, Daniel



    Re: STRUCT: segmentation fault

    Dirty Oerty - 12.12.2007, 23:49


    Hm...core dumped...

    hört sich iwie an, als ob da was mit der Speicherung schief läuft.
    Versuch doch mal probehalber statt Char-Zeigern Char-Arrays zu nehmen.

    MfG
    Daniel



    Re: STRUCT: segmentation fault

    wirthi - 13.12.2007, 01:06


    Der Vorschlag von Dirty Oerty ist gut, das ist sonnenklar: wenn du einen Pointer anlegst, ist das in der realen Welt mit einem Wegweiser vergleichbar. Er zeigt an, wo du hin musst, um etwas bestimmtest zu finden. Nur den Wegweiser zu errichten heißt aber nicht, gleichzeitig das Ding zu errichten, auf das gewiesen wird. Einen Wegweiser nach Metropolis zu bauen lässt die Stadt nicht erscheinen ...

    So ist es auch mit Pointern. Du legst zwar ein Struct von Pointern an, aber eben nur von Pointern. Diese Pointer müssen auch irgendwo hin zeigen. Da du sie nicht initalisierst, zeigen sie irgend wo hin. Der scanf-Befehl wird dann versuchen, auf den namen-Pointer des ersten Array-Elements zuzugreifen. Da dieser Pointer aber eben *irgendwo* hin zeigt, ist das sehr wahrscheinlich ein Speicherbereich, der nicht deinem Programm gehört => Segmentation fault.

    Wie Dirty Oerty schreibt: verwende hier ein Array statt einen Pointer, oder benutze malloc um den Speicher anzufordern, bevor du was rein schreibst.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    assembler - gepostet von Moritz am Mittwoch 05.12.2007
    Zufallsgenerator - gepostet von necator am Dienstag 19.06.2007
    problem bei Hello world - gepostet von computermaus88 am Sonntag 11.11.2007
    QBasic - gepostet von Fränz Friederes am Sonntag 04.06.2006
    anfang eines Spieles - gepostet von Moritz am Dienstag 09.10.2007
    Brauche Hilfe - gepostet von Belphegor am Montag 05.03.2007
    Turbo C - gepostet von Mei$ter A^ am Montag 24.04.2006
    Problem mit vp - gepostet von Moritz am Samstag 01.12.2007



    Ähnliche Beiträge wie "STRUCT: segmentation fault"

    ZeRo-Inc's fault - ZeRo-Inc (Montag 09.10.2006)
    da willl ich auch mal... - zachi2001 (Montag 02.06.2008)
    Umlaute in einen struct einlesen - Kimi (Dienstag 29.01.2008)
    painful fault - Hannibal93 (Donnerstag 17.05.2007)
    1x13 Ertappt! (Your Fault) - fallenangel (Sonntag 08.10.2006)
    PAGE_FAULT_IN_NONPAGED_AREA - rockbar (Montag 29.11.2004)