Ошибка сегментации в fgets () - язык C

Я получаю ошибку сегментации именно в этой строке:

while (fgets(line, MAX_LEN + 1, stream) != NULL) {

....

}

где MAX_LEN - 500, строка читает текущую строку, и поток открывается черезfopen(filename, "r");

Я читаю строки из файла с определенным форматом и получаю ошибку сегментации (дампы ядра) именно в этой строке в соответствии с отладчиком.

Я сделал свой код так, чтобы он игнорировал строки, которые не соответствуют формату scanf.

Вот что я реализую. Что-то близкое к этому хотя бы

int main(int argc, int **argv) {
....
....
if (argc == 1) {
printf("enter file name: ");
scanf("%s", filename);
if (!(stream = fopen(filename, "r"))) {
    perror("Error message goes here.");
    exit(EXIT_FAILURE);
}


} else if (argc == 2) {
stream = fopen(argv[1], "r");
 if (sream == NULL) {
   fprintf(stderr, "error message", argv[1], errno));
   return EX_OSERR;
 }
}

while (fgets(line, MAX_LEN + 1, stream) != NULL) {
 if (sscanf(line, "%49[^@ ]@%49s -> %49[^@ ]@%49s", sender_username, sender_hostname,  receiver_username, receiver_hostname) != 4) {
  continue;
} else {

do work;

}

Ответы на вопрос(0)

Ваш ответ на вопрос