Ошибка сегментации случайным образом с использованием fgets (), происходит только на сервере linux, а не в моем дистрибутиве - PullRequest
0 голосов
/ 10 февраля 2020

Эй, ребята, я работаю над программой, которая должна имитировать c некоторые базовые c функции tr. У меня есть куча тестов, которые иногда будут проходить, а иногда - segfault (Return 139). Я пытался выяснить это какое-то время и, честно говоря, у меня нет идей.

char echo_array[256];
while ((fgets(echo_array, 255, stdin)) != NULL)
{
  for (int i = 0; echo_array[i] != EOF; i++)
  {
    for (int j = 0; j < strlen(argv[1]); j++){

      if (echo_array[i] == argv[1][j])
      {
        echo_array[i] = argv[2][j];
      }
    }
  }
  printf("%s", echo_array); 
}
return 0;

}}

1 Ответ

2 голосов
/ 10 февраля 2020

Сравнение echo_array[i] != EOF должно быть echo_array[i] != '\0'. Строки в C заканчиваются нулевым символом, а не EOF.

...