Просто для удовольствия я написал функцию, чтобы проверить, является ли данная строка палиндромом. Когда я запускаю прогу она выдает ошибку сегментации. Может ли кто-нибудь пролить свет на это.
int palindrome( const char *input )
{
char * reverse;
int len = 0 ;
int i = 0;
bool result = false;
len = strlen(input);
if( len <= 1)
return -1;
reverse = (char *)malloc( sizeof ( char)* len);
printf( " the len of character is %d", len);
while( input[i++] != '/0')
{
reverse[ --len] = input[i];
}
reverse[len] = '/0';
printf(" the reverse string is %s", reverse);
if( !strcmp( input, reverse) )
return 1;
else
return 0;
}
Спасибо
Sam
Изменение кода в соответствии с предложениями:
int palindrome( const char *input )
{
char * reverse;
int len = 0 ;
int i = 0;
bool result = false;
len = strlen(input)+1;
if( len <= 2)
return -1;
reverse = (char *)malloc(len);
printf( " the len of character is %d", len);
reverse[len] = '\0' ;
while( input[i++] != '\0')
{
reverse[ --len] = input[i];
}
printf(" the reverse string is %s", reverse);
if( !strcmp( input, reverse) )
return 1;
else
return 0;
}
У меня все еще есть проблема. Ошибка сегментации исчезла, но обратная строка пуста.