У меня есть программа переменного тока, которая обнаруживает палиндром.Он также обнаруживает палиндромы с пробелами.Возвращает -1, если строка равна нулю, 1, если это палиндром, и 0 в противном случае.Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int pal(char *str){
if(str[0] == '\0'){
return -1;
}else{
size_t i = 0;
size_t j = strlen(str) - 1;
while(*(str + i) != '\0'){
if(*(str + i) == ' '){
i++;
continue;
}else if(*(str + j) == ' '){
j--;
continue;
}else{
if(*(str + i) != *(str + j)){
return 0;
}
}
i++;
j--;
}
return 1;
}
}
int main(){
char *str = "a man a plan a canal panama";
printf("%d", pal(str));
printf("\n");
return 0;
}
Когда я скомпилировал и запустил эту программу на своем локальном компьютере, она работала нормально.Но когда я загрузил его в INGInious вопрос моего курса CS (INGInious - это платформа, на которой люди могут загрузить свои ответы по определенной теме, а система просматривает их), это вызывает ошибку сегментации.Есть ли сценарий, который может привести к SegFault, который я не знаю?