Nee, ich war noch richtig altmodisch (meinem Alter angepasst) analog beim Schlachter meines Vertrauens ![]()
Zeile 36/36 im zweiten Tab: Da begrenzt Du ja sinnvollerweise schon den Index in den Code-Speicher. Das genau ist die Stelle, wo "Code zu lang" schon erkannt wird.
default : code[counter] = key; // just add the keystroke to the code
if (counter < sizeof(code) - 1) counter++;
Allerdings bleibst Du da einfach auf der letzten Ziffer stehen.
Ohne es compiliert oder getestet zu haben (einfach trocken heruntergetippt):
default :
code[counter] = key; // just add the keystroke to the code
counter++;
if (counter >= sizeof(code) )
{
// Jetzt ist es zu lang.
counter = 0;
// fällt dann durch auf return 0 am Ende der Funktion
}
else
{
// Noch innerhalb des Bereichs, aber noch nicht fertig
// Die return-Werte waren noch nicht eindeutig:
// 0 wurde sowohl bei falschem Code als auch bei Code-Eingabe noch nicht fertig zurückgegeben.
// Das ist zwar im Ergebnis das gleiche, aber ich würde die Fälle unterscheiden.
return 3;
}
break; // den hattest Du auch noch vergessen - würde bei ausführlichen Compilerwarnungen angemeckert.
Viel Erfolg - jetzt gehe ich Mittagessen kochen!