Ich versuche, eine Funktion in C
zu schreiben, die 2 Zeiger erhält, einen für das erste Zeichen in einer Zeichenfolge und das andere für das mittlere Zeichen in der Zeichenfolge. Die Funktion muss überprüfen, ob die erste Hälfte der Zeichenfolge die gleiche wie die zweite Hälfte ist (Groß- und Kleinschreibung wird ignoriert) und gibt "TRUE"
oder "FALSE"
zurück.C - Rekursion mit Strings
Ich weiß nicht, was die Bedingung für die Rekursion stoppt und warum es nicht funktioniert.
Hier ist mein Code. Was ist der Fehler?
#define SIZE 80
enum { FALSE = 0, TRUE = 1 };
int CheckString(char* start, char* middle);
int main()
{
char str[SIZE], *pstart, *pmiddle;
printf("Enter a String-->:");
fgets(str, SIZE, stdin);
pstart = &str[0];
pmiddle = &str[(strlen(str) - 1)/2];
printf(" %d \n", CheckString(pstart, pmiddle));
return 0;
}
int CheckString(char* start, char* middle)
{
if (middle == '\0');
return TRUE;
if ((*start == *middle) || (*start == *middle + 32) || (*start == *middle - 32))
CheckString(start + 1, middle + 1);
else
return FALSE;
}
habe ich es zu diesem Code
int CheckString(char* start, char* middle)
{
if ((*start == *middle) || (*start == *middle + 32) || (*start == *middle - 32))
{
CheckString(start + 1, middle + 1);
return TRUE;
}
else
return FALSE;
}
und nun seine Arbeit, aber nur für das erste Zeichen und Mitte seines bewegen sich nicht das nächste Zeichen Hilfe jemanden zu überprüfen, was worng ???
Die 'pstart' und' pmiddle' Variablen in den 'main' Funktionen sind * einzelne Zeichen *, keine Zeiger. Ihre Funktion wird für diese Variablen gesperrt und Sie haben ein * undefiniertes Verhalten *. –
also ändern Sie es in '* pstart'? –
Dies sollte mit einer Compiler-Warnung krächzen, da der rekursive Pfad keinen Wert zurückgibt. Sie rufen nur 'CheckString()' auf, geben ihren Rückgabewert nicht in der Rekursionskette zurück. Und ja, 'pstart' und' pmiddle' müssen Zeiger auf den Anfang und die Mitte der ursprünglichen Zeichenfolge sein, nicht Kopien der Zeichen an diesen Stellen, wie sie derzeit implementiert sind. – dhke