Ein neues Thema erstellen  Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite Vorherige 1 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 06.07.2002, 14:48 
HLDS Team
Benutzeravatar

Registriert: 26.11.2001, 01:00
Beiträge: 676
@frostschutz ist es bei strcmp() egal wie Ja geschrieben ist? Sonnste müsste es doch etwa so aussehen
Code:
if(strcmp(Data,"JA")==0 || strcmp(Data,"Ja")==0 || strcmp(Data,"jA")==0 || strcmp(Data,"ja")==0)
oder?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.07.2002, 16:05 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Um derlei Konstrukte zu vermeiden, sollten man vorher alles in Klein- oder Großbuchstaben umwandeln und dann vergleichen lassen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.07.2002, 17:07 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Ähm, ich denke, daß strcasecmp() solche Fälle wesentlich effizienter löst als 4 strcmp-Aufrufe oder ähnliche Umwandlungsmethoden.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.07.2002, 17:18 
HLDS Team
Benutzeravatar

Registriert: 26.11.2001, 01:00
Beiträge: 676
Oh, stimmt "[...]not case-sensitive."


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 06.07.2002, 21:21 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Zitat:
Ähm, ich denke, daß strcasecmp() solche Fälle wesentlich effizienter löst als 4 strcmp-Aufrufe oder ähnliche Umwandlungsmethoden.
... und da sie auch nicht zaubern kann, im Endeffekt nichts anderes macht.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07.07.2002, 09:42 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Zitat:
Zitat:
Ähm, ich denke, daß strcasecmp() solche Fälle wesentlich effizienter löst als 4 strcmp-Aufrufe oder ähnliche Umwandlungsmethoden.
... und da sie auch nicht zaubern kann, im Endeffekt nichts anderes macht.
Ähem! Dann ist das aber schlecht programmiert. Denn eine strcasecmp() Funktion kann durchaus effizienter arbeiten als strcmp() mit vorher in lowercase umgewandelten strings.

Um einen String komplett in kleinbuchstaben umzuwandeln, muss das Char-Array bis zur 0-Terminierung durchlaufen & ggf. modifizert werden.
D.h. der gesamte String wird in einer Schleife zunächst mal komplett bearbeitet.

Ein ordentlich programmiertes strcasecmp() muss das nicht! Es durchläuft wie strcmp() in der gleichen Schleife beide Strings; zusätzlich kommt hier nur die gleiche Abfrage bei bei einer lowercase-Umwandlung hinzu, d.h. jedes Zeichen wird einzeln verglichen und ggf. vor dem Vergleich in kleinschreibung umgewandelt.

D.h. wenn du "ICH BIN EIN VERDAMMT LANGER GROSSGESCHRIEBENER SATZ" mit "bla" vergleichst,

- würde eine lowercase-Funktion zunächst mal den String in einer Schleife durchlaufen und daraus "ich bin ein verdammt langer grossgeschriebener satz" machen, und danach das strcmp im ersten schritt ('i' == 'b') abbrechen.

- ein ordentliches strcasecmp würde im ersten Schritt 'I' in 'i' umwandeln und im ersten Schritt ('i' == 'b') abbrechen.

Die beiden Funktionen hätten nur dann den gleichen Aufwand, wenn die Strings identisch sind; aber selbst dann spart ein ordentliches strcasecmp() einen Funktionsaufruf und viele, viele Zuweisung, da strcasecmp() den String selbst ja nicht ändert.

-> ordentliches strcasecmp() sein deutlich effizienter.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 07.07.2002, 13:54 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Ja gut, sie wandelt nicht den kompletten String um, aber ohne Umwandlung gehts nun mal nicht...


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite Vorherige 1 2


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"