Verfügbare Informationen zu "STRUCT: segmentation fault"
Qualität des Beitrags: 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:17STRUCT: 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)
