Ich muss eine Datei lesen und dafür verwende ich die Funktion getline. Das Folgende ist ein Beispiel von dieser Webseite: http://crasseux.com/books/ctutorial/getline.html das ich temperiert habe, um eine Datei öffnen zu können.Segmentation Fehler in C get Zeile
#include <stdio.h>
#include <stdlib.h>
int main()
{
int bytes_read;
unsigned long nbytes = 100;
char *my_string;
char *filename;
char *line;
FILE *fd = NULL;
puts ("enter filename");
filename = (char *) malloc (nbytes + 1);
bytes_read = getline (&filename, &nbytes, stdin);
fd = fopen(filename, "r");
bytes_read = getline (&line, &nbytes, fd);
puts (line);
puts ("Please enter a line of text.");
/* These 2 lines are the heart of the program. */
my_string = (char *) malloc (nbytes + 1);
bytes_read = getline (&my_string, &nbytes, stdin);
if (bytes_read == -1)
{
puts ("ERROR!");
}
else
{
puts ("You typed:");
puts (my_string);
}
return 0;
}
und wenn ich das Programm starte, bekomme ich einen Segmentierungsfehler 11, und ich weiß nicht, was ich falsch mache. Vielen Dank im Voraus.
Überprüfen Sie immer, dass Sie die Datei erfolgreich geöffnet haben. Sie haben den Zeilenumbruch nicht von der Zeichenfolge entfernt, die von der get-Zeile zurückgegeben wurde, sodass Sie wahrscheinlich keine Datei mit einem Zeilenumbruch am Ende des Namens geöffnet haben. –
Es ist auch üblich, 'fd' für einen Dateideskriptor (vom Typ' int') und 'fp' für einen Dateizeiger (stream - vom Typ' FILE * ') zu verwenden. –