Разбиение строки в C на отдельные части - PullRequest
0 голосов
/ 21 ноября 2010

Я пытался написать функцию на C, которая обнаруживает палиндромы.В настоящее время программа выглядит следующим образом:

#include <stdio.h>
#include <string.h>

int main()
{
    char palindrome[24]; int palength; int halflength;
    gets(palindrome);
    palength = strlen(palindrome);
    halflength = palength / 2;
    printf("That string is %u characters long.\r\n", palength);
    printf("Half of that is %u.\r\n", halflength);
    return 0;
}

Прямо сейчас она определяет длину строки, а также показывает, какая ее половина.Это просто чтобы убедиться, что все работает так, как я думаю.То, что должна делать остальная часть функции (если возможно), это взять целое число из «halflength» и использовать его, чтобы убрать это количество символов из начала и конца строки и сохранить их в отдельных строках.Оттуда я смогу сравнить символы в них и вернуть true или false, если строка действительно является палиндромом.

TL; DR - Можно ли взять определенное количество символов (вв этом случае целое число "halflength") отходит от начала и конца строки и сохраняет их в отдельных переменных.Прочитайте выше для получения дополнительной информации о том, что я пытаюсь сделать.

PS - я знаю, что не следует использовать gets (), но не хотелось писать функцию для усечения \ n от fgets ().

Ответы [ 3 ]

4 голосов
/ 21 ноября 2010
int len = strlen(palindrome) - 1; // assuming no \n
int half = len << 1;
for (int i=0; i<=half; ++i)
  if(palindrome[i] != palindrome[len-i])
     return false;
return true;
1 голос
/ 21 ноября 2010

Что, если вы сделаете что-то подобное,

char *str1="lol",*str2;
str2=strrev(str1);

// если оба они одинаковы, то на самом деле это палиндром;)

0 голосов
/ 21 ноября 2010

Обнаружено, что я неправильно подхожу к проблеме.Как я должен это делать, это перебирать символы, используя указатель вперед и назад.Хотя, если вы все еще хотите ответить на первоначальный вопрос, он все равно может пригодиться в какой-то момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...