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
.
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.
Tags und Links c segmentation-fault