Ich bin neu in C und ich versuche, eines der Übungsproblem von K & R Buch zu lösen. Das Problem besteht darin, festzustellen, ob eine gegebene Zeichenfolge mit demselben Inhalt einer anderen Zeichenfolge endet.Unerwartetes Ergebnis in Zeigerarithmetik, in C
Zum Beispiel, wenn String eins ratandcat
und String zwei ist cat
. Dann ist es wahr, dass String zwei in String eins endet. Um das zu lösen, habe ich eine halbe Lösung gefunden und mich mit Zeigern getroffen.
Meine Idee ist es, die Position zu finden, wo die Zeichenfolge endet und auch die Position der Zeichenfolge zwei beginnt, so dass ich weiter fortfahren kann. Ich habe diesen Code:
int strEnd(char *s,char *t){
int ans,slength =0 ,tlength = 0;
while(*s++)
slength++;
while(*t++)
tlength++;
s += slength - tlength;
printf("%c\n",*t);
printf("%c\n",*s);
return ans;
}
void main() {
char *message = "ratandcat";
char *message2 = "at";
int a = strEnd(message,message2);
}
Aber seltsam diese Ausgänge:
%
(and a blank space)
Aber ich möchte, dass meine s
Zeiger auf a
zeigen. Aber das tut es nicht. Was läuft hier falsch?
Vielen Dank im Voraus.
Sie wollten wahrscheinlich den ursprünglichen Zeiger hier verschieben: 's + = slength - tlength;' nicht der eine bewegte sich bis zum Ende der Zeichenfolge. –