Привет, я узнал в классе о библиотеке string.h и, в частности, о функции strcmp, которая сравнивается с строками. , и если первая строка появляется сначала в словаре, она вернет число, большее, чем 0, если вторая строка больше, чем первая, чем она вернет число меньше 0, и если они равны, то он должен вернуть 0. ив использовал его, как это:strcmp возвращает только 0 (ошибка palindrom algo)
strcmp(strArr , strrev(strArr));
Не стесняйтесь, чтобы обучить меня.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 100
#define PALINDROM_TRUE 0//because in strcmp if both strings compared are equile the strcmp will return 0.
int main(void)
{
char strArr[MAX_LENGTH];
printf("Enter string (max length 100 chars): ");
fgets(strArr , MAX_LENGTH , stdin);
int pali = strcmp(strArr , strrev(strArr));
if(pali == PALINDROM_TRUE)
{
printf("Palindrom\n");
}
else
{
printf("Not Palindrom\n");
}
system("PAUSE");
return 0;
}
моя проблема заключается в том, что код ниже, когда я вхожу, т.е. «а» печатает на экран Palindrom, который он должен напечатать Не Palindrom, он никогда не печатает Не Palindrom
Вы пробовали распечатывание значения '' strArr' и strrev (strArr) ', чтобы убедиться, что они имеют значение, которые вы ожидаете? –
damn ive удалось сделать pali «int», извините за это. – spyc
Ваше «исправление *» для способа работы 'strcmp()' является потенциальным источником путаницы. Вместо этого попробуйте что-то вроде '#define strequal (x, y) (strcmp ((x), (y)) == 0)', а затем 'if (strequal (x, y) == true)' ... –