Что делает эта функция? - PullRequest
       7

Что делает эта функция?

4 голосов
/ 29 октября 2010
int mystery( const char *s1, const char *s2 ) {
  for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {
    if( *s1 != *s2 ) {
      return 0;
    } //end if
  } //end for
  return 1;
}

Я знаю, что есть ошибки при печати, но это именно так, как было.спасибо, ребята, мне нужно, чтобы он тоже запускался, и я уже добавил объявление переменной, но я получаю ошибку компилятора, которая говорит

в функции `int main()':<br> error: a function-definition is not allowed here before '{' token<br> error: expected, 'или `;до '{' токена

Ответы [ 5 ]

11 голосов
/ 29 октября 2010

Сравнивает две строки, возвращая 1, если строка первая начинается со строки два, или наоборот и 0, если нет.

4 голосов
/ 29 октября 2010

Возвращает 0, если меньшее из (s1, s2) не совпадает с началом более длинного. Строки могут быть разной длины, но одна должна быть подстрокой, начинающейся с начала другой.

Edit. Ой, Шарт опередил меня. Голосуй за него до меня.

3 голосов
/ 29 октября 2010

Стоит ли объяснять?

 for( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ) {

Первый элемент цикла for, перед первым ';'выполняет начальную настройку, здесь ничего не требуется.
Таким образом, цикл for выполняется, пока любой из символов, на которые указывают s1 и s2, не равен нулю.Ноль отмечает конец строки в c и c ++.
Последняя часть цикла for - это то, что нужно делать в каждом цикле - в этом случае указатели s1 и s2 перемещаются так, чтобы указывать на следующий символ в каждой из строк.

   if( *s1 != *s2 ) {
      return 0;

Если символы, на которые указывают s1 и s2, не совпадают - т. Е. Мы нашли первый различный символ в двух строках, вернем 0, то есть false

return 1;

Если мы дойдем до конца одной из строк и не найдем символов, которые бы отличались, возвращаем 1 - т. Е. True.

Таким образом, функция возвращает true, если строки идентичны или одна строка начинается сдругой, и false - это строки, которые имеют разные символы.

1 голос
/ 29 октября 2010

Этот код будет выглядеть так на Java <pre> int specificComparison(String s1, String s2){ int minLength = Math.min(s1.length(), s2.length()); if(s1.substring(0, minLength).equals(s2.substring(0, minLength)){ return 1; }else{ return 0; } }

0 голосов
/ 29 октября 2010

Похоже, эта функция возвращает 1, когда две строки равны, и 0, если они не равны.

По крайней мере, это могло быть намерением.

...