Doppelte Buchstaben in einem Array
-
Hallo,
Habe da ein kleines Problem und zwar möchte ich per getch() einen Buchstaben einlesen, dieser soll dann überprüft werden ob er schonmal eingegeben wurde oder nicht. Nur irgendwie stimmt dazu die Funktion nicht so ganz.
unsigned char tmp[26]; /*global */
... if(isalpha(letter=getch())) { if(verify_double_letter(letter) == 1) { printf("You have alread entered this character!\n"); } } ...
int verify_double_letter(char letter) { unsigned short int i; static unsigned short int count = 0; for(i = 0; i <= strlen(tmp); i++) { if(tmp[i] == letter) { return 1; } } tmp[count++] = letter; return 0; }
Dazu kommt das sie die eine if-Anweisung in einer while normalerweise befindet. Wenn aus dieser Schleife ausgetreten wird, muss/will ich das tmp-Array löschen, für den nächsten Aufruf. Bisher habe ich das einfach mit:
tmp[0] = '\0';
gemacht. Nur wenn es dann zu einem neu Einsprung in die Schleife kommt, werden nicht mehr die Buchstaben auf doppelte überprüft. Woran kann das liegen?
Mfg
podok
-
Den ganzen Array löschst Du aber nur mit
tmp[arraygroesse]={0};
-
Dein Fehler liegt bei der Bedingung deiner Schleife. Überleg mal woran strlen() das Ende des Strings erkennt ;). Außerdem solltest du nochmal drüber nachdenken wie das mit dem Index ist. Besonders welchen Index das letzte Zeichen im String hat.
-
AJ: Ok
absolute_beginner:
Also so aber doch auch nicht, da bekomme ich Syntax Fehler.
-
@absolute_beginner
Das funktioniert nur, wenn du direkt bei der Deklaration auch eine Definition machst.Ansonsten kann man z. B. memset() verwenden, um alle Elemente des Arrays auf 0 zu setzen.
-
OK, wieder dazugelernt- in meinem Buch steht dazu übrigens gar nichts...