Warum gibt die folgende Funktion findString() die angegebenen Werte für die angegebenen Argumente zurück?brauchen Erklärung des Ergebnisses von findString() - Funktion zurückgegeben
findstring ("Text", "") den Wert 0 zurück
findstring ("", "text") -1 zurück.
findString ("", "") gibt -1 zurück.
Ich habe auf strstr nachgelesen und schaute auf andere Fragen und verstehe es einfach nicht.
// find s1 inside source, return index number if found, -1 if not found
#include <stdio.h>
#include <stdbool.h>
int findString (const char source[], const char s[])
{
int i, j, foundit = false;
// try each character in source
for (i = 0; source[i] != '\0' && !foundit; ++i) {
foundit = true;
// now see if corresponding chars from s match
for (j = 0; s[j] != '\0' && foundit; ++j)
if (source[j + i] != s[j] || source[j + i] == '\0')
foundit = false;
if (foundit)
return i;
}
return -1;
}
int main (void)
{
int index;
printf ("index = %i\n", findString("text", ""));
printf ("index = %i\n", findString("", "text"));
printf ("index = %i\n", findString("", ""));
return 0;
}
Haben Sie versucht, mit dem Debugger durchzugehen? Welche IDE verwendest du? – Podo
gcc, minGW und notepad – user6923395
Ein flüchtiger Wert deutet darauf hin, dass die Funktion früh ausbrechen kann und dann -1 zurückgibt. Der räumliche Fall, der nach einer leeren Zeichenkette sucht, erscheint auch logisch. – usr2564301