2015-10-14 3 views
0

Может кто-нибудь, пожалуйста, объясните мне, если у меня есть две символьные массивы обугливается array1 [] и полукокса array2 [], чтобы сравнить две строки в этих двух массивов, что это значитСимвольные операции массив

if (array1[j] == array2[j-i]) 

и

if (array2[j-i] == '\0') 

Я смущен частью [ji] == j и [ji] == '\ 0'. Это, наверное, очень глупый вопрос, но я очень новичок в программировании. Спасибо

+0

@chux Я знаю, что приятель, я хочу знать, что делает [IJ] = [я] и [ц] = '\ 0' (пустая строка) в смысле непрофессионала. Спасибо –

+0

Этот код, вероятно, используется, чтобы увидеть, содержится ли подстрока в большей строке. Вы сравниваете символ, расположенный в текущем местоположении 'j', с символом, расположенным на символах' i'. – vsoftco

+0

делает [i-j] = [j], если строка массива1 [i-j] равна подстроке другого массива say array2 [j]? @vsoftco –

ответ

0

EDIT: Что делает его понятным для новичков в теме (в комментариях выше)

Да. Если ваш i-й индекс array1 соответствует 0-му индексу array2. Тогда (i + j) -й индекс массива 1 соответствует индексу (0 + j) th = jth массива2. Другими словами, если вы находитесь в индексе k в массиве 1, вам нужно вычесть i из k, чтобы перейти к соответствующему индексу в array2.

КОНЕЦ EDIT

Что вы имеете в виду «что это значит?»

Для того, чтобы проверить, если array1 равен array2, вы можете перемещаться по одной из строк и проверить характер равенства:

int equals(char *array1, char *array2, int length) { 
    int i; 
    for(i = 0; i < length; i++) { 
     //make sure that the char in array1 is equal 
     //to the char in array2 
     if(array1[i] != array2[i]) 
      return 0; 
     //if array1 is done, then you no longer need 
     //to check (and you know array2 is done too 
     //from previous if statement) 
     if(array1[i] == '\0' 
      break; 
    } 
    return 1; 
} 

Обратите внимание, что длина должна быть меньше двух длин array1 и массив2 к избегайте плохого доступа к памяти. Вероятно, вы знаете, какой из них будет, но без контекста, я не могу дать более конкретного ответа.

+0

Я запутался с частью [j-i] == j и [j-i] == '\ 0'. –

+0

Можете ли вы разместить больше своего кода? Откуда вы это читаете? –

+0

if (array1 [i] == array2 [0]) { for (j = i;; j ++) { if (array2 [j-i] == '\ 0') break; –

0

Вот вы комментировал код,

if (if(array1[i] == array2[0]) 
    // you have 2 arrays of chars and here 
    // you compare char at position i in array1 to 
    // char at position 0 in array2 

{ for (j = i; ; j++) { if (array2[j-i] == '\0') break; 
     // if they are identical 
     // you have a for condition inside the condition strictly 
     // nothing happens, and it breaks out of the for condition 
     // when the char in 
     // array2 is the end of string '\0' 
Смежные вопросы