使用 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。
大家好,我正在开发一个应该模仿 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。