Я экспериментирую с одной из функций в книге «Язык программирования K & R C» и использую указатели для написания функции strindex, а не для обозначения массива.У меня странная проблема: если я включаю оператор printf () в любую из двух точек моего кода ниже, то функция возвращает правильный индекс (в данном случае 6), но если я опущу операторы printf (),функция возвращает -1.
Я действительно не понимаю, почему это должно иметь какое-либо значение и был бы благодарен за любые разъяснения.Вот мой код:
#include <stdio.h>
int strindex(char *a, char *b) {
char *pa;
char *astart = a;
char *pb = b;
int len;
while(*pb++ != '\0')
len++;
while(*a != '\0') {
pa = a;
pb = b;
for(;*pb != '\0' && *pa == *pb; pa++, pb++)
;
if(len > 0 && *pb == '\0') {
return a - astart;
}
//printf("%c\n", *a);
a++;
}
//printf("%c\n", *a);
return -1;
}
int main() {
char *a = "experiment";
char *b = "me";
printf("index is %d\n", strindex(a, b));
return 0;
}
Большое спасибо
Джо