019
14.09.2004, 18:24 Uhr
0xdeadbeef
Gott (Operator)
|
Heh. Mir fällt aber gerade auf, dass all diese Lösungen fehlerhaft sind - was ist, wenn der erste String kürzer als der zweite ist und an der Stelle, an der der erste Sentinel hängt, im zweiten String ein Leerzeichen steht, schlägt der Vergleich nicht fehl und die Funktion segfaultet möglicherweise. In meiner Lösung ist das einfach zu beheben:
C++: |
f(s,t)char*s,*t;{while(*s&&*t)if((*s++^*t++)&~32)return 1;return*s|*t;}
|
...bei euch beiden ist das nicht so einfach.
@pablo: Mit & kommen wir nicht weiter, nein. Stell dir z.B. vor, *s = 'A' = 65 und *t = ' ' = 32, dann ist *s & *t == 65 & 32 == 0. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 14.09.2004 um 18:25 Uhr von 0xdeadbeef editiert. |