ошибка при создании функции, аналогичной strcmp () - PullRequest
1 голос
/ 30 марта 2020

Я создал функцию, которая работает как strcmp () - под названием compareString. Сначала условие if else проверяет, имеют ли две строки одинаковую длину. For for l oop проверяет, равны ли каждый элемент массива a и b, и останавливается после проверки всей строки [по условию i условие if должно проверяться до countString (a) -1

bool compareString(char a[],char b[])
{
    if(countString(a)==countString(b)) //i had made a function countString that works as strlen
    {
        int i;
        printf("%d\n",countString(a));
       for(i=0;a[i]==b[i]&&i<countString(a);i++) {};
       if(i==countString(a)-1) return 1; //*********line1*******// 
       else return 0;
    }
    else
        return 0;
}

как в состоянии для l oop я упомянул я

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Ваш код нуждается в некоторой реструктуризации.

bool compareString(char a[], char b[]) {
    // strings not the same length, return false
    if (countString(a) != countString(b)) {
        return 0;
    }
    // we call this before the loop so we don't call it multiple times
    int len = countString(a);
    for (int i = 0; i < len; i ++) {
        // strings have differing characters, return false
        if (a[i] != b[i]) {
            return 0;
        }
    }
    // we haven't returned false yet so they're the same
    return 1;
}

Помните, что когда вы вызываете return, код немедленно прекращает работу и выходит из функции.

0 голосов
/ 30 марта 2020

Логическое значение c, которое следует использовать: 1.Читай две строки 2. Получите длину обеих строк 3.Если длина двух строк не равна, верните несоответствие, иначе сравните символ за символом обеих строк *, если символ не совпадает Возвращаемое несоответствие * иначе Возвращаемое соответствие строки

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