Эта функция пытается выполнить все это сразу. Поскольку функция может возвращать только одно значение, одно из полученных значений (разность) должно быть передано обратно вызывающему абоненту с помощью указателя на него.
#include <stdio.h>
size_t lead_cmp(const char * one, const char * two, int *result);
size_t lead_cmp(const char * one, const char * two, int *result)
{
size_t pos;
for(pos=0; one[pos] && two[pos]; pos++) {
if (one[pos] != two[pos]) break;
}
*result = one[pos] - two[pos];
return pos;
}
int main(int argc, char **argv)
{
size_t len;
int diff;
len = lead_cmp (argv[1], argv[2], &diff);
printf("Pos=%zu, Rc=%d\n", len, diff);
return 0;
}
Результат:
$ ./a.out /home/jjjj/ /home/jjjj/kkkk/
Pos=11, Rc=-107
$
Найденное положение 11, а не 12, поскольку С использует 0 на основе индексации.
Он возвращает количество совпадающих символов: длину общего префикса.
Хорошо, спасибо, я попробую, что – Vanguard
Да, это сработало, спасибо еще раз :) – Vanguard
Добро пожаловать! А также вы можете переложить ответ, если вам понравилось ... ;-) – alk