Segmentierungsfehler - C [duplizieren]

8

Warum kommt der folgende Code mit einem Segmentierungsfehler zurück? Wenn ich Zeile 7 auskommentiere, verschwindet der Seg-Fehler.

%Vor%

Prost!

    
ceod 19.05.2012, 20:09
quelle

5 Antworten

13

s ist ein nicht initialisierter Zeiger; Sie schreiben an einen zufälligen Speicherort im Speicher. Dies ruft undefiniertes Verhalten auf.

Sie müssen etwas Speicher für s reservieren. Auch niemals gets ; Es gibt keine Möglichkeit, zu verhindern, dass es den zugewiesenen Speicher überläuft. Verwenden Sie stattdessen fgets .

    
Oliver Charlesworth 19.05.2012, 20:10
quelle
2

Katastrophal schlecht:

%Vor%

Besser:

%Vor%

Beste:

%Vor%     
paulsm4 19.05.2012 20:12
quelle
1

Dein scanf("%s", s); ist auskommentiert. Das bedeutet, dass s nicht initialisiert ist. Wenn diese Zeile ln = strlen(s); ausgeführt wird, erhalten Sie einen Seg-Fehler.

Es hilft immer, einen Zeiger auf NULL zu initialisieren, und dann vor dem Verwenden des Zeigers auf Null zu testen.

    
octopusgrabbus 20.05.2012 19:42
quelle
1

Noch besser

%Vor%     
KAction 17.10.2012 08:49
quelle
1
%Vor%

Dies würde nicht zu einem Segmentierungsfehler führen, da Sie nicht mehr auf einen unbekannten Ort verweisen würden

    
Subbu 13.04.2013 18:37
quelle

Tags und Links