exakt, denn char s[n] ist nur ein array und kein string im eigentlichen sinn, bei der variante mit den anführungszeichen jedoch interpretiert er nur den anfang des arrays und wird VERMUTLICH das nachfolgende byte mit einer 0 versehen ... die problematik die ich angesprochen habe bezog sich auch eher auf die spätere verwendung, wobei die terminierende 0 zufällig erhalten werden KÖNNTE aber auch durch eine andere variable verändert werden KÖNNTE ... und das wie oben schon gesagt zum controller absturz füren kann
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
naja.... ob er jetzt Strings nutzt oder nicht, ist ihm überlassen - wenn er weiß, dass es x Zeichen sind, kommt er auch ohne \0 aus...
statt vergleiche solange bis \0 in einem String erreicht kann man auch irgendwie sowas machen...
//a sei die Eingabe, b sei das fest gespeicherte, x sei die bekannte Länge von b
for (i = 0; i < x; i++) {if (a[i] != b[i]) || (a[i] == '\0') return false;}
if (a[x] != '\0') return false;
return true;
AAAAABäääääär für die Eingabe der Daten:
pass bei C-Code auf, man weiß nie, ob alle Compiler (Windows/Linux/..., offiziell/alternative/...) die Spezifikationen perfekt einhalten...
nicht dass ein Compiler meckert, weil es für ihn 6 Zeichen sind, einer das einfach richtig abarbeitet (\0 wegschmeißen) und ein anderer es verbockt es (hängt \0 an und verschiebt alles)
(letztens erst nen Compiler geschrieben, man glaubt nicht was eine Umstellung an der Spezifikation bewirken kann)
also lieber statt "Hallo", was zurechtgeschnitten werden müsste,
ein sauberes {'H',...,'o'}, das Char[] einfach als Byte[] interpretiert...
Naja, dann kann man das Programmieren auch gleich sein lassen, wenn man sich nicht auf die Sprachspezifikation stützen (kann). Der Standard sagt klar aus, dass nur der Speicher des Arrays beschrieben wird, alles andere ist ein Fehler im Compiler.
mfG
Markus
PS: http://www.dclc-faq.de/kap5.htm#5.20
Lesezeichen