Я создаю функцию, которая меняет строку и проверяет, является ли строка палиндром или нет. Когда я тестирую функцию с очевидным палиндром, например, «abba», функция говорит, что это не палиндром. Также прямая строка и обратная строка также отличаются длиной строки!C: Palindrome: Различные значения strlen
#include <stdio.h>
#include <string.h>
char forward [] = "abba"; //The string to be reversed
int size = (sizeof(forward)/sizeof(forward[0]) - 1);
int j = 0;
char reverse [10];
void reverser(char forward []) {
printf("%s", "String forward: ");
for (int i = 0; i < size; i++) { //Function for printing out the forward string.
printf("%c", forward[i]);
}
printf("\n");
printf("%s", "String reversed: ");
for (int i = size, j = 0; i >= 0; --i, ++j) { //Function for reversing the string and printing it.
reverse[j] = forward[i];
printf("%c", reverse[j]);
}
printf("\n");
if (strcmp(forward, reverse) != 0) { //Using strcmp to check if the forward and reversed string are the same.
printf("Not a palindrome!\n");
}
else{
printf("A palindrome!\n");
}
printf("Forward string length: %d\n",strlen(forward));
printf("Reversed string length: %d\n",strlen(reverse));
}
int main() {
reverser(forward);
}
Выход:
Строка вперед: авва
Строка изменилась: ABBA
Не палиндром!
вперед Длина строки: 9
Перевернутой длина строки: 0
Пожалуйста, отпечатай свой код правильно, я не могу его понять. –
'int i = size' ->' int i = size-1' – BLUEPIXY
Что это? Почему бы не strlen() здесь? int size = (sizeof (вперед)/sizeof (вперед [0]) - 1); –