Hi,
ich arbeite sonst ur mit Zahlen &co ... in sachen strings bin ich noch nicht wirklich erfahren ...
Mit Arrays aber auch nicht wirklich, oder...? Vielleicht machst Du Dir erstmal klar, was ein String überhaupt ist, nämlich ein Array aus Zeichen. Jedes Zeichen passt genau in ein Byte und der String ist also eine gewisse Anzahl von Bytes, die im Speicher direkt hintereinander liegen. Dein Rechner kennt den Anfang des Strings, bzw. den String dadurch, dass er die Adresse des ersten Zeichens hat. Das Ende erkennt er _nur_ daran, dass ein Byte mit dem Inhalt 0 folgt. Deshalb ist für den Compiler ein String auch im Grunde nichts weiter als ein Pointer auf ein Zeichen (sprich die Adresse des ersten Zeichens Deines Strings).
Auf die einzelnen Inhalte eines Arrays kannst Du in C _ausschliesslich_ über ihren Index (als einen Zahlwert, also einen Integer) zugreifen, der immer für das erste Element mit 0 beginnt. Du versuchst im Beispiel ein Feld mit "a" zu addressieren. "a" ist ein String und deshalb für den Compiler ein Pointer. Deshalb sagt er Dir, Du versuchst den Wert des Pointers als Integer zu benutzen und warnt Dich, weil das sehr wahrscheinlich nicht das ist, was Du willst (natürlich ist es das nicht).
Versuch mal, in Deinem Programm die Variablen genauer zu benennen, danach welche Funktion sie erfüllen. Dann wird Dir vielleicht manches schon klarer und ohnehin besser zu verstehen. Wenn Du z.B. eingabe eingabeString nennst, dann wird Dir bei der Variable zeichen vielleicht selbst die Diskrepanz auffallen. Denn die heisst zeichen, obwohl sie in Wirklichkeit ein String ist, das "stinkt".
Ach, noch eine dumme Anfängerfalle: Mit einfachen Hochkommata wird genau ein Zeichen zugewiesen. Also z.B. mit 'a' genau das Zeichen a, das passt in ein Byte. Mit doppelten Hochkommate wird aber ein String zugewiesen. "a" ist also nicht nur ein a sondern es ist ein Array aus zwei Bytes in dem das erste den Wert 'a' und das zweite den Wert 0 hat (= String-Ende-Kennung). Und noch ein Unterschied zu PHP: Strings kannst Du in C durch "=" nur bei der Deklaration zuweisen, später musst Du immer mit strcpy arbeiten (besser aber mit strncpy oder memcpy, weil sicherer).
Ich hoffe, das war verständlich. C muss man tatsächlich verstanden haben, um vernünftig damit arbeiten zu können, denn es macht wirklich genau das, was Du ihm sagst ;-)
Ciao
Stefanie
MfG. Christoph Ludwig