strstr mit ohne case sensitive?
-
Gabs da nich stristr oder sowas ?
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Windalf schrieb:
char* mystrstr(char* str,char* keyword){ char *p,*q,*r; for(p=str;*p;++p){ for(r=keyword,q=p;*r&&*q&&*p;++r,++q) if(tolower(*r)-tolower(*q))break; if(!*r)return p; } return NULL; }
wo sind wir hier? Beim IOCCC?
-
Probe-Nutzer schrieb:
was ist so schwer daran, beide Zeichenketten auf einheitliche Schreibweise (groß oder klein) zu bringen, und dann die Such-Operation durchzuführen?
Gegeben: ein 200KB Text, ein 5B langer Suchtext. Du kopierst also zuerst den Text (willst ja das Original nicht verlieren) und konvertierst den dann komplett in Großbuchstaben? Bravo.
-
wow, 7 köpfe, 7 lösungen...
danke erstmal an alle, windalf dei code scheint ma am vernünftigsten, aber zum glück(?) hat sich das erledigt, ahh, ohne stress ins weekend
cya tom
-
Bashar schrieb:
Gegeben: ein 200KB Text, ein 5B langer Suchtext. Du kopierst also zuerst den Text (willst ja das Original nicht verlieren) und konvertierst den dann komplett in Großbuchstaben? Bravo.
mein Vorschlag ist natürlich nur eine "Pauschal-Lösung", die man immer wählen könnte, und nicht für "Extrem-Fälle" geeignet. Man kann sicher über andere Vorschläge diskutieren, wenn solche Datenmengen vorliegen oder der Originalposter angedeutet hätte, daß es auch um Performance geht...
MfG
-
@ShadeOfMine
Ich musste erstmal bei google nachschlagen was zum henker nun IOCCC heisstdas hab ich diesmal nicht verdient... Ich hab mir echt mühe gegeben...die parameter der funktion haben sprechende namen.. ich habe eingerückt... usw... was ist denn diesmal daran so furchtbar?
-
@ probenutzer:
wie, was, performance, stringlänge, originalposter dissen, ...
läuft sowieso auf einer windoof kiste, ich programmier ja keinen microcontroller, außerdem *tief lufthol* dürfte ich die strings nicht verändern, also kopieren blablablablabla und überhaupt blablabla (will eh keiner lesen)@all:
aber natürlich dickes lob an alle für die vorschläge, bleibts so helffreudig und mochtsas guat
tomP.S: he admin, den thread killen bitte
-
also entweder habe ich jetzt was von grundauf falsch verstanden, oder du bist ganz schön unverschämt! da hat sich jemand mühe gegeben dir zu helfen. jemand anderes hat diesen code zwar etwas kritisiert, aber das gibt dir noch lange nicht das recht den autor anschnautzen (so hab ich das zumindest aufgefasst). das tat beim besten willen nicht not! er hat dir nichts getan, mit keinem wort hat er dich angegriffen oder beleidigt.
ich finde eine entschuldigung sehr angebracht.
-
Argh .. jetzt hab ich was durcheinandergebracht. Der Code kam von wem anders und wurde auch von wem anders kritisiert. Hier war es eine idee, die kritisiert wurde. Ändert aber wenig daran, dass dein verhalten unangemessen war.
-
@darktom:
wer hat wann und wo einen Originalposter (d.h dich) gedisst
?
Tatsache ist nur, je mehr man über die Anforderungen weiß, um so gezielter und geeigneter werden die Lösungs-Vorschläge sein. Da du zuerst im MFC-Forum gepostet hattest, wollte ich mit meinem Hinweis auf die CString-Methode MakeUpper bzw. MakeLower hinweisen, die dazu (evtl.!) geeignet wären, darum war ich verwundert, warum du auf diese Methode nicht kommst, das hat aber nichts mit Dissen zu tun, sondern sollte eher meine Verwunderung ausdrücken, denn wenn man mit MFC programmiert, arbeitet man schon mal mit CStrings, und dann sind die genannten Methoden bekannt. Jetzt, wo sich das ganze in das C-Forum verlagert hat, kann man zu tolower/toupper greifen, wie Windalf's Code vorführt.
MfG
-
darktom schrieb:
wow, 7 köpfe, 7 lösungen...
danke erstmal an alle, windalf dei code scheint ma am vernünftigsten, aber zum glück(?) hat sich das erledigt, ahh, ohne stress ins weekend
cya tommehr kann ich dazu auch nicht mehr sagen...die ganze sache war schon abgehakt bevor sie überhaupt angefangen hat!
wer dann wann was zu wem über wessen code sagt/schreibt und wie andere darauf reagieren, oder nicht, bleibt jedem einzelnen überlassen, denk ich mal, aber wenns dennis hier etwas zu forsch umgeht... :p
-
Windalf schrieb:
das hab ich diesmal nicht verdient... Ich hab mir echt mühe gegeben...die parameter der funktion haben sprechende namen.. ich habe eingerückt... usw... was ist denn diesmal daran so furchtbar?
das - statt dem !=
weiters sind die variablennamen ne katastrophe. Als ich checken wollte, ob dein code korrekt ist, bin ich an den 3 variablen gescheitert.
-
bin ich an den 3 variablen gescheitert.
erzähl mir mal keine märchen... wer von uns beiden hat denn nun mehr plan von c/c++... den bären lass ich mir nicht aufbinden
-
@Windalf
Die Übergabeparameter sind ja noch in etwa sprechend, aber was zum Hänker bedeutet p q und r??
-
p ist der zeiger auf die aktuelle position im string str ab der momentan verglichen wird...
q und der zeiger der von position von p aus anfängt keyword (auf dessen anfang r jeden schleifendurchlauf gesetzt wird) mit r zu vergleichen...was willst du denn da für sprechende namen nehmen?
char *zeiger_auf_aktuelle_zu_vergleichende_position_in_str;
da bleib ich lieber gleich bei p,q und r...
-
curpos?
MfG SideWinder
-
@sidewinder
ist schon mal ne nette idee leider trifft das auf alle 3 zu... curpos1 bis 3 wohl auch nicht auf viel gegenliebe...
-
Windalf schrieb:
@sidewinder
ist schon mal ne nette idee leider trifft das auf alle 3 zu... curpos1 bis 3 wohl auch nicht auf viel gegenliebe...selbst i, j und k sind besser als p, q und r :p;)
MfG SideWinder
-
selbst i, j und k sind besser als p, q und r
find ich nicht... i,jund k nutze ich als integerzählervariablen... wenns pointer sind fang ich halt bei p an...