Ich experimentiere mit einer der Funktionen im K&R C-Programmiersprachenbuch und verwende Zeiger, um die strindex-Funktion anstelle der Array-Notation zu schreiben. Ich habe ein seltsames Problem: Wenn ich an einer der beiden Stellen in meinem Code unten eine printf()-Anweisung einfüge, gibt die Funktion den richtigen Index zurück (in diesem Fall 6), aber wenn ich die printf()-Anweisungen weglasse, gibt die Funktion -1 zurück.
Ich kann wirklich nicht verstehen, warum dies überhaupt einen Unterschied machen sollte und wäre für jede Klarstellung dankbar. Hier ist mein Code:
#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;
}
Vielen Dank!
Joe