使用 fgets() 随机出现分段错误,只发生在 linux 服务器上,而不是我自己的发行版

Segmentation fault randomly using fgets(), only happening on linux server not my own distro

大家好,我正在开发一个应该模仿 tr 的一些基本功能的程序。我有一堆测试,有时会通过,有时会出现段错误(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;

} }

比较 echo_array[i] != EOF 应该是 echo_array[i] != '[=11=]'。 C 中的字符串以零字符结尾,而不是 EOF。