Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller: Funktion strstr


von entwickler (Gast)


Lesenswert?

Guten Morgen,

in meiner C Applikation benötige ich die Funktion strstr um ein Wort 
herauszufinden ob es in dem string vorkommt oder nicht.
1
    static char* ptr;
2
    ptr = strstr(rxBuffer, "OK");
3
    
4
    if(strcmp(ptr,"OK\r\n"))
5
    {
6
        // tue irgendwas
7
    }

Im string kommt das Wort OK vor aber strcmp funktioniert nicht.
Der Pointer ptr enthält die Zeichenkette "OK\r\n".

von Sebastian (Gast)


Lesenswert?

entwickler schrieb:
> Guten Morgen,
> in meiner C Applikation benötige ich die Funktion strstr um ein Wort
> herauszufinden ob es in dem string vorkommt oder nicht.
>     static char* ptr;
>     ptr = strstr(rxBuffer, "OK");
>
>     if(strcmp(ptr,"OK\r\n"))
>     {
>         // tue irgendwas
>     }
>
> Im string kommt das Wort OK vor aber strcmp funktioniert nicht.
> Der Pointer ptr enthält die Zeichenkette "OK\r\n".

Ich glaube strcmp liefert 0 wenn die Zeichenketten gleich sind.

LG, Sebastian

von Sebastian (Gast)


Lesenswert?

Zwei weitere Probleme:

1. strstr liefert NULL wenn der Suchstring nicht gefunden wird. Zugriff 
auf *NULL ist böse.

2. Du solltest strncmp benutzen, sonst findest du nur Wörter am Ende.

LG, Sebastian

von Adam P. (adamap)


Lesenswert?

entwickler schrieb:
> static char* ptr;
>     ptr = strstr(rxBuffer, "OK");
>
>     if(strcmp(ptr,"OK\r\n"))
>     {
>         // tue irgendwas
>     }

Mach es doch eifnach so:
1
if(strstr(rxBuffer, "OK") != NULL)
2
{
3
    // tue irgendwas
4
}

von entwickler (Gast)


Lesenswert?

Ok Danke Adam P.

So funktioniert es auch.

von W.S. (Gast)


Lesenswert?

entwickler schrieb:
> in meiner C Applikation benötige ich die Funktion strstr um ein Wort
> herauszufinden ob es in dem string vorkommt oder nicht.

Also offenbar irgend eine Kommandozeilen-Auswertung o.ä.
Und was machst du, wenn da zufällig mal sowas wie "look" dasteht? Ist 
dieses dir dann auch recht?

Was ich damit anzudeuten versuche, ist daß eine Zeilenauswertung mit den 
üblichen Verdächtigen aus dem C Repertoire eine ziemliche 
Umständlichkeit ist oder gar falsche Ergebnisse liefern kann. Mache das, 
was du grad im Sinne hast, lieber anders.

W.S.

von Klaus W. (mfgkw)


Lesenswert?

loOK wäre schlimmer...

von Gerald K. (geku)


Lesenswert?

entwickler schrieb:
> Im string kommt das Wort OK vor aber strcmp funktioniert nicht.
> Der Pointer ptr enthält die Zeichenkette "OK\r\n".

Wenn es nach dem "OK" weiter geht, dann ist der String länger als "OK" 
und das Ergebnis demit ungleich.

Mit folgender Funktion kann man Worte von einander isolieren:
1
char *extract_word(unsigned char n, const char *SrcStr, const char *delimiters, char *DstStr)
2
/*- returns the n-th word of string, using delimiters */
3
{
4
    unsigned char count;
5
    char *po;
6
    char *pa;
7
    count=0;                 /* counts then keyword */
8
    pa=DstStr;
9
    po=NULL;                 /* points to the n'th keyword */
10
    if (SrcStr==NULL)
11
    {
12
    }
13
    else
14
    {
15
        strcpy(DstStr,SrcStr);
16
17
        while (*DstStr!=0)
18
        {
19
            /* skip over delimiters */
20
            while ((strrchr(delimiters,*DstStr)!=NULL)&&(*DstStr!=0))
21
            {
22
                if (count==n)
23
                {
24
                    *DstStr=0;
25
                    return (po);
26
                }
27
                DstStr++;
28
            }
29
            /* if we're not beyond end of DstStr, we're at the start of a keyword */
30
            if (*DstStr!=0)
31
            {
32
                count++;
33
                if (count==n)
34
                {
35
                    po=DstStr;  /* set pointer "po" to the start of the keyword */
36
                }
37
            }
38
            /* find the end of the current word, "DstStr" points after the end of the keyword */
39
            while ((strrchr(delimiters,*DstStr)==NULL)&&(*DstStr!=0))
40
            {
41
                DstStr++;
42
            }
43
        }
44
        /* returns a pointervalue to the start of the wanted keyword */
45
    }
46
    return (po);
47
}

unsigned char n ........ n-tes Wort wird isoliert

const char *SrcStr ..... Zeiger auf Quellstring

const char *delimiters.. Zeichenkette mit Trennzeichen z.B. " ;."

char *DstStr............ Übergabe des Puffers für den Zielstrings (muss 
länger als dr Quellstring sein)

von Adam P. (adamap)


Lesenswert?

Gerald K. schrieb:
> Wenn es nach dem "OK" weiter geht, dann ist der String länger als "OK"
> und das Ergebnis demit ungleich.

entwickler schrieb:
> um ein Wort
> herauszufinden ob es in dem string vorkommt oder nicht.

Egal ob was kommt oder nicht...er sucht nur "ob es vorkommt".
magic word: KISS

: Bearbeitet durch User
von Gerald K. (geku)


Lesenswert?

**strcmp** bewertet immer Inhalt und Länge des Strings

"OK" ungleich "OK "

: Bearbeitet durch User
von Adam P. (adamap)


Lesenswert?

Gerald K. schrieb:
> **strcmp** bewertet immer Inhalt und Länge des Strings
>
> "OK" ungleich "OK "

JA...aber der TO sucht nur das Vorkommen, nicht die Gleichheit.

pseudo-code:
[if (vorhanden)] != [str1 == str2]

: Bearbeitet durch User
von Gerald K. (geku)


Lesenswert?

Darum ist folgendes richtig


Adam P. schrieb:
> Mach es doch eifnach so:
> if(strstr(rxBuffer, "OK") != NULL)
> {
>     // tue irgendwas
>

und nicht strcmp

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Gerald K. schrieb:
> Mit folgender Funktion kann man Worte von einander isolieren:
> char *extract_word(unsigned char n, const char *SrcStr, const char
> *delimiters, char *DstStr)...

OMG, 5 Argumente für sowas.

Besser geht's etwa so:
1
 if (match("OTTOKAR",&Cpt))  DoOttokar(); 
2
 if (match("EMIL",&Cpt))
3
    { if match("IST",&Cpt))
4
      { if match("DOOF",&Cpt)) DoEmilIstDoof(); }
5
    }

Sowas liest vom Zeilenanfang bzw. vom Stand des Zeigers 'Cpt' an, 
vergleicht nach Übergehen von white space Zeichen die Zeichen (Case 
unsensitive für eingegebene Zeichen) und stoppt dann bei match mit true 
oder bei unmatch mit false. Der Zeiger 'Cpt' wird bei match auf das 
Zeichen nach dem erkannten String gesetzt.

W.S.

von Nop (Gast)


Lesenswert?

W.S. schrieb:

> Besser geht's etwa so:

Mal abgesehen von der absolut unüblichen Positionierung der geschweiften 
Klammern kannst Du es eleganter so machen:
1
if ( match("EMIL",&Cpt) && match("IST",&Cpt) && match("DOOF",&Cpt) )
2
    {
3
        DoEmilIstDoof();
4
    }

von W.S. (Gast)


Lesenswert?

Nop schrieb:
> Mal abgesehen von der absolut unüblichen Positionierung der geschweiften
> Klammern kannst Du es eleganter so machen:

Nö, erstens wird dieses Beispiel dadurch nicht eleganter und zweitens 
(bedeutender!) ist das Ergebnis davon abhängig, wie der jeweilige 
Compiler arbeitet. Grund: du weißt es nicht wirklich, in welcher 
Reihenfolge der Compiler für deinen Ausdruck die Aufrufe der Funktion 
match erstellt. Dem geht man komplett aus dem Weg, wenn jede Stufe 
separat ist.

Und was für dich eine absolut unübliche Positionierung sein mag, ist 
dein Problem, wenn es denn überhaupt ein Problem sein sollte.

W.S.

von Nop (Gast)


Lesenswert?

W.S. schrieb:
> Grund: du weißt es nicht wirklich, in welcher
> Reihenfolge der Compiler für deinen Ausdruck die Aufrufe der Funktion
> match erstellt.

DU weißt es nicht, ich schon. Weil ich C kann.

von Teo (Gast)


Lesenswert?

Popcorn?

von M. K. (sylaina)


Lesenswert?

Teo schrieb:
> Popcorn?

Ich hätte Cola im Angebot ;)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

W.S. schrieb:

> Grund: du weißt es nicht wirklich, in welcher
> Reihenfolge der Compiler für deinen Ausdruck die Aufrufe der Funktion
> match erstellt.

Falsch.

Die Reihenfolge ist in C garantiert. Es geht bei der Verknüpfung immer 
von links nach rechts, solange die logischen Operatoren identisch sind. 
Wenn nicht mehr identisch, wird nach der definierten Priorität der 
C-Operatoren vorgegangen (z.B. AND vor OR).

Sobald ein Ausdruck einer Und-Kette
1
if (A && B && C && D)
falsch ist, wird die weitere Evaluation eventuell folgender logischer 
Ausdrücke (und damit auch der Funktionsaufrufe!) abgebrochen - also 
genau wie bei Deinen ineinander verschachtelten if-Blöcken.

Bei Veroderung
1
(A || B || C || D)
wird übrigens die weitere Evaluation abgebrochen, sobald der erste 
Ausdruck wahr wird.

Stichwort für Deine bevorzugte Suchmaschine: "short circuit evaluation"

Siehe auch:

https://de.wikipedia.org/wiki/Kurzschlussauswertung

https://en.wikipedia.org/wiki/Short-circuit_evaluation

P.S.

Wo Du doch eher firm bist in Pascal als in C:

Auch in Free-Pascal und Modula-2 (als Nachfolger von Pascal) sind die 
logischen Operatoren AND und OR Kurzschlussoperatoren.

Auszug aus https://www.freepascal.org/docs-html/ref/refsu46.html :

"By default, boolean expressions are evaluated with short-circuit 
evaluation."

: Bearbeitet durch Moderator
von Klaus W. (mfgkw)


Lesenswert?

Frank M. schrieb:
> Auch in Free-Pascal und Modula-2 (als Nachfolger von Pascal) sind die
> logischen Operatoren AND und OR Kurzschlussoperatoren.

Das war sogar im ursprünglichen Pascal so, sollten also alle 
Pascal-Dialekte ebenso machen.

von Markus F. (mfro)


Lesenswert?

Gerald K. schrieb:
> Mit folgender Funktion kann man Worte von einander isolieren:
> char *extract_word(unsigned char n, const char *SrcStr, const char
> *delimiters, char *DstStr)

Warum nicht einfach strtok() (oder strtok_r(), falls notwendig) 
benutzen?

Dafür ist es da.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

W.S. schrieb:
> und zweitens
> (bedeutender!) ist das Ergebnis davon abhängig, wie der jeweilige
> Compiler arbeitet. Grund: du weißt es nicht wirklich, in welcher
> Reihenfolge der Compiler für deinen Ausdruck die Aufrufe der Funktion
> match erstellt. Dem geht man komplett aus dem Weg, wenn jede Stufe
> separat ist.

Es ist echt immerwieder der Hammer wie du allen zeigen musst, dass du 
absolut KEINE AHNUNG von C hast!
Aber immer so tun als wärst du der größte Programmierer aller Zeiten auf 
der Welt und alle müssen deine Vorschläge nutzen, denn andere Argumente 
zählen ja nicht.
Du bist wirklich einfach nurnoch ne peinliche Vollpanne...

Wie Frank schon geschrieben hat ist die Reihenfolge der Evaluation 
garantiert.
So lässt sich ein einer und Verkettung sogar erst ein Pointer auf 
ungleich NULL prüfen und dann dereferenzieren.
Ist der Pointer NULL so kommt er nicht mehr bei der Deref. vorbei und es 
stürzt auch nix ab.
Ein sehr gutes Feature!
1
if ((p_oven != NULL) && (oven::states::done == p_oven->state))
2
{
3
 eatCookies();
4
}

Weiterhin kannst du doch auch soooo gut ASM.
Dann schreibs mal ordentliuch hin (also wie vorgeschlagen) und guck dir 
mal an was der Compiler draus macht.

von W.S. (Gast)


Lesenswert?

Frank M. schrieb:
> Falsch.

Meinst du. Wenn ich mich recht entsinne, dann hatte z.B. der 
Sozobon-Compiler die dekodierten Ausdrücke zunächst in einen Stack 
gedrückt, so daß so ein Ausdruck wie oben quasi von rechts nach links in 
der Zielhardware abgearbeitet wurde. Also davon, daß es bei dem gerade 
dir vorliegenden Compiler anders herum ist, darfst du nicht schließen, 
daß es immer und überall genau so gehandhabt wird.

Also schreibe nicht so ein vorwitziges "Falsch" hin, wenn du etwas 
siehst, was du nicht gewöhnt bist.

Abgesehen davon ist das mal wieder ein Herumhacken auf dem 
nebensächlichsten Detail der bisherigen Diskussion. Zumindest DU 
solltest das begreifen. Den übrigen Disputenten nehme ich das nicht 
übel.

Sinn des Ganzen ist eine geordnete Verarbeitung von Kommandozeilen, wo 
z.B. auch stehen könnte:
1
 if (match("Ottokar",&Cpt))  
2
 { x = GetLong(&Cpt);
3
   b = match("ein",&Cpt);
4
   DoOttokar(x, b); 
5
   return;
6
 }
Und auch dieses Beispiel ist nur ein Beispiel zur Demonstration des 
Prinzips. Und nun sind all die anderen Leute mal aufgerufen, etwas 
besseres unter den üblichen Stringfunktionen bei C zu posten, falls so 
etwas zu finden ist.

W.S.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Da ist sie wieder die Hybris des W.S.
"Alle doof nur ich nicht".
Du kannst kein C, ziehst dir nen alten Gammelcompiler ausm Hintern, der 
sich nicht an den C Standard hält und erklärst das für das golden 
Sample.
Geh einfach weg, du nervst nurnoch.

W.S. schrieb:
> Und nun sind all die anderen Leute mal aufgerufen, etwas
> besseres unter den üblichen Stringfunktionen bei C zu posten, falls so
> etwas zu finden ist.

Wurde schon längst, aber du HASST ja die c std lib, daher bist du blind.

von Zeno (Gast)


Lesenswert?

Mw E. schrieb:
> So lässt sich ein einer und Verkettung sogar erst ein Pointer auf
> ungleich NULL

Das ist doch Käse, man könnte selbst in dem Konstrukt von W.S. zuerst 
prüfen ob der Pointer ungleich NULL ist. Aber darum ging es doch gar 
nicht. Es ging darum abzuprüfen ob ein bestimmter String in einem 
anderen String enthalten ist. Ob man das nun per if oder &&-Verkettung 
macht ist am Ende erst mal für die Funktion unerheblich.
Wie man seinen Code formatiert ist doch auch jedem selbst überlassen. Am 
Ende muß man seinen Code für's erste selbst gut lesen können und wenn 
man seine Formatierung konsequent durchzieht, dann ist es i.d.R. auch 
für andere kein Problem den Code zu lesen.
Der eine mag eben lieber Vanilleeis, der andere bevorzugt halt Schoko. 
Du mußt doch nur Deinen Senf dazu geben, weil der W.S. halt etwas anders 
oder von mir aus auch etwas speziell ist und Dir das nicht passt.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Zeno, der W.S. Versteher ist wieder da ;)

Im Kern gehts um die Aussage, dass der Compiler das in irgendeiner 
Reihenfolge durchgeht.
Das stimmt eben nicht.
Dies hat Frank aber auch schon ausführlichst erklärt.

Mal abgesehen reichts hier vielen im Forum, was W.S. hvor sich hin 
schwurbelt.
Du solltest doch so langsam mitbekommen haben, dass auch andere 
angemeldete User hier immer "freundlicher" zu ihm werden ;)
Was eben an seiner Beratungsresistenz liegt.
Es wird im was erklärt wenn er wieder was falsches vor sich hinblubbert, 
zB zum Thema nop wegoptimieren und DMA.
Nach ein paar Wochen kommt er dann wieder mit genau dem selben Stuss um 
die Ecke.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

W.S. schrieb:
> Meinst du.

Nein, meint der C-Standard. Und das war schon immer so, seit Anfang an. 
Short Circuit Evaluation ist absolut sinnvoll. Wenn Du nun meinst, es 
gäbe da einein ollen Compiler, der es nicht so täte, dann

- hält er sich entweder nicht an die Regeln und ist damit kein 
C-Compiler
oder
- trügt Dich Dein Gedächtnis gewaltig.

Ich tippe auf letzteres.

Sorry, Du hast einfach keine Ahnung von C. Ich habe Dir Links 
aufgezählt, welche klar und deutlich belegen, dass nicht nur in C, 
sondern auch in vielen anderen Sprachen Short Circuit Evaluation gang 
und gäbe und sogar Vorschrift ist. Du als alter Pascal-Hase solltest sie 
eigentlich kennen.

W.S. schrieb:
> Abgesehen davon ist das mal wieder ein Herumhacken auf dem
> nebensächlichsten Detail der bisherigen Diskussion.

Sorry, Du hast mit dem Gehacke auf verkettete AND-Operationen selber 
angefangen. Versuche einfach nicht immer, anderen großspurig die Welt zu 
erklären. Zu oft tritt man dabei in einen Fettnapf.

: Bearbeitet durch Moderator
von W.S. (Gast)


Lesenswert?

Frank M. schrieb:
> W.S. schrieb:
>> Meinst du.
>
> Nein, meint der C-Standard. Und das war schon immer so, seit Anfang an.
> Short Circuit Evaluation ist absolut sinnvoll. Wenn Du nun meinst, es
> gäbe da einein ollen Compiler, der es nicht so täte, dann...

Ja was dann?
Also die verkürzte Ausdrucksberechnung, die dann abbricht, wenn das 
Ergebnis gefunden wurde und weitere Terme daran nichts mehr ändern 
können, ist etwas anderes, als die Frage, in welcher Reihenfolge das auf 
der Zielhardware abgearbeitet wird. Begreife das mal.

Wozu sollte es also gut sein, so etwas herauszufordern?
Ich sehe dazu keinerlei triftigen Grund.
Hier hat nur einer alles auf eine Zeile kriegen wollen, das war der 
Anlaß dieser Neben-Diskussion. Und ob ich oder sonstwer das ästhetischer 
finden würde, ist hier kein Thema. Also laß lieber deine kühnen 
Behauptungen. Es wäre allemal sinnvoller, zum Thema etwas beizutragen. 
Hier haben wir einen TO, der mit Hilfe von Standard-String-Funktionen 
von C irgend eine Kommandozeile auswerten will und dabei feststellen 
muß, daß das mühsam ist, weil all diese o.g. Funktionen ihm dabei nicht 
effektiv helfen.

W.S.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

W.S. schrieb:
> Also die verkürzte Ausdrucksberechnung, die dann abbricht, wenn das
> Ergebnis gefunden wurde und weitere Terme daran nichts mehr ändern
> können, ist etwas anderes, als die Frage, in welcher Reihenfolge das auf
> der Zielhardware abgearbeitet wird. Begreife das mal.

Wieder falsch!
Red dich nicht raus, du kannst es einfach nicht...
Daher zündest du hier wieder Nebelkerzen, so wie immer!

Der C Compiler hat die Instruktionen auf der Zielhardwaree eben so zu 
sortieren, dass die Evaluationsreihenfolge eingehalten wird.
Begreife das mal.

von Nop (Gast)


Lesenswert?

W.S. schrieb:

> Also die verkürzte Ausdrucksberechnung, die dann abbricht, wenn das
> Ergebnis gefunden wurde und weitere Terme daran nichts mehr ändern
> können, ist etwas anderes, als die Frage, in welcher Reihenfolge das auf
> der Zielhardware abgearbeitet wird. Begreife das mal.

Begreife Du mal, wieso überhaupt gängige C-Idiome wie das hier schon 
genannte
1
if (ptr && ptr->foo==bar)
überhaupt funktionieren können. Eben weil die Auswertungsreihenfolge 
festgelegt ist, weswegen man in diesem Beispiel keine Dereferenzierung 
eines Nullpointers riskiert.

Deswegen würde ich in meiner Firma in einem Codereview sowas wie Deine 
unnötig geschachtelten if nicht durchgehen lassen, weil sie darauf 
verweisen, daß dem Programmierer grundlegendes C-Wissen fehlt.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Nop schrieb:
> Deswegen würde ich in meiner Firma in einem Codereview sowas wie Deine
> unnötig geschachtelten if nicht durchgehen lassen, weil sie darauf
> verweisen, daß dem Programmierer grundlegendes C-Wissen fehlt.

Die Frage is auch wie lange jemand eingestellt bleibt, der bei der 
Nachfrage dann diese W.S. Antwort bringt und sich dann weigert dies 
anzuerkennen.
Diese Antwort lässt so tief ins unwissen blicken was den C Standard 
anbelangt und auch wie ein Compiler dies auf der Mikroarchitektur 
abbildet.
Bei den ganzen Magic Numbers im Code, die er hier auch imemr wieder 
vorschlägt, wär er auch jedesmal durch nen internen Codereview 
durchgefallen.

Daher Frage ich mich echt wo der Arbeitet, damit wir nicht ausversehen 
mal was von dieser Firma kaufen oder nen Auftrag dahin vergeben.
Er hatte mal was von Berlin erwähnt.

von Zeno (Gast)


Lesenswert?

Mw E. schrieb:
> Zeno, der W.S. Versteher ist wieder da ;)

Du laberst halt wieder mal größtenteils nur dummes Zeug.

von Johannes S. (Gast)


Lesenswert?

Wer hier labert ist doch wohl klar. Für einen Oberlehrer, der ständig 
Code anderer Leute kritisiert, ist das doch wohl hochnotpeinlich.

Und Codereview würde ja Teamarbeit bedeuten, dafür halte ich so einen 
selbsternannten Programmiergott nicht fähig.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

W.S. schrieb:
> ist etwas anderes, als die Frage, in welcher Reihenfolge das auf der
> Zielhardware abgearbeitet wird. Begreife das mal.

Die Reihenfolge ist garantiert: von links nach rechts. Sonst wäre - wie 
schon öfter erwähnt
1
    if (ptr && ptr->foo)
sinnlos.

Und damit ist für mich EOD - zumindest, was die Sache Short Circuit 
Evaluation betrifft.

Übrigens: Leider bist Du die Implementation der Funktion match() 
schuldig geblieben. Diese ist nämlich nicht Bestandteil der libc. Warum 
also nicht strstr(), siehe https://linux.die.net/man/3/strstr

von meow (Gast)


Lesenswert?

Frank M. schrieb:
> Übrigens: Leider bist Du die Implementation der Funktion match()
> schuldig geblieben.

Das ist mir jetzt auch schon oft aufgefallen, dass die beispiele von 
W.S. unbrauchbar sind, weil wichtige Teile immer fehlen.
Darauf angesprochen liefert er dies dann nicht nach.
Er redet sich lieber raus, dass dies doch nur Beispiele sein.

D.h. seine Beiträge sind von Anfang an wertlos bzw. unbrauchbar.
Abgesehen von den ganzen enthaltenen Fehlern welche auf mangelnde 
Grundkenntnisse in C hindeuten.

von meow (Gast)


Lesenswert?

Warum meldet sich W.S. nicht mehr?
Hier muss aufgeklärt werden.

Entweder er erklärt sich wieso er dieser Annahme ist oder er muss 
hinnehmen, dass er falsch liegt und dies zugeben.
Aber er entzieht sich der Verantwortung.

Das läßt tief in den Charakter blicken!

von EAF (Gast)


Lesenswert?

meow schrieb:
> Hier muss aufgeklärt werden.

Da gibts nicht mehr aufzuklären.

Einsicht, ist jedem seine persönliche Sache.
Diese kann man nicht erfolgreich einfordern bzw. durchsetzen.

von meow (Gast)


Lesenswert?

EAF schrieb:
> Da gibts nicht mehr aufzuklären.
>
> Einsicht, ist jedem seine persönliche Sache.
> Diese kann man nicht erfolgreich einfordern bzw. durchsetzen.

Du meinst: Abwarten bis er dieses Beispiel wieder postet?

von W.S. (Gast)


Lesenswert?

meow schrieb:
> Warum meldet sich W.S. nicht mehr?

Weil dieser Absturz vom eigentlichen Thema der ganzen Diskussion nichts 
bringt. Das Beispiel war eigentlich nur zum Verdeutlichen, wie man auf 
einfache Weise Kommandozeilen etc. testen kann, ohne daß man so viel 
Code rings um sowas wie strstr schreiben muß.

Aber anstatt wenigstens ein wenig am Thema zu bleiben, haben sich die 
ewigen Besserwisser an sowas wie "emil...ist...doof" hochgezogen. Nicht 
um einen sinnvollen Beitrag zu leisten, sondern um herumzuzanken. 
Nebenbei würde ich so eine Zusammenziehung wie die von nop auch 
weiterhin nicht schön finden. Und auch nicht praktisch oder gar sinnvoll 
finden. Gehört aber nicht zum Thema. Deshalb kein weiterer Kommentar.

Nochwas: Da Frank dediziert nach der Funktion 'match' nachgefragt hat 
kommt hier das Reizwort für ihn: schau in die Lernbetty. Es ist nur eine 
ganz kleine Funktion. Aber du hast ja schon einmal feierlich erklärt, 
dort niemals hineinschauen zu wollen. Aber auch das ist nicht mein 
Problem und auch nicht das Problem des TO. Der hat sich mit strstr 
herumgeärgert und das zeigt mir, daß es an manchen Stellen weitaus 
besser ist, sich seine eigenen und passenderen Funktionen selber zu 
schreiben, als mit Gewalt das vorgefertigte Zeug mit viel dazu nötigem 
Anpaßcode benutzen zu wollen. So ist das eben. Guckt nicht immer nur in 
euer Regelbuch, sondern wenigstens gelegentlich auch mal aus der Furche.

W.S.

von EAF (Gast)


Lesenswert?

meow schrieb:
> Du meinst: Abwarten bis er dieses Beispiel wieder postet?
Warten?
Wenn dir warten spaß macht, dann nur zu...

von meow (Gast)


Lesenswert?

Eigentlich wurde ja nur gefragt wieso die Schreibweise so interessant 
ist.
Die Antwort darauf war etwas merkwürdig.

Es wäre eben nicht schlecht sowas in der Zukunft zu bedenken, das Forum 
ist ein geben und nehmen.
Kein "Beispiele reinwerfen und wieder gehen".

W.S. schrieb:
> ewigen Besserwisser

Wieso ewige Besserwisser?
Es wurde doch über ein kleines Verständnisproblem im C Standard 
aufgeklärt.

W.S. schrieb:
> Gehört aber nicht zum Thema. Deshalb kein weiterer Kommentar.

Das Thema ist schon entgleist, da machen wir einfach weiter.

von EAF (Gast)


Lesenswert?

meow schrieb:
>> Einsicht, ist jedem seine persönliche Sache.
Du siehst!
Keinerlei Einsicht.

Es sind die anderen.
Und zwar nur die anderen.


Nicht, dass er eine Nebelkerze abgeschossen hatte...
Nööö.....
Man hat auch nicht versucht ihn zu korrigieren....
Er hat auch sofort in sein C Buch geschaut.


Das (Seiten)Thema hätte in 5 Minuten durch sein können!
Einer behauptet, die Reihenfolge ist definiert.
Einer glaubt, sie wäre nicht definiert.
Also schaut man in die Doku, und stellt fest, sie ist definiert.

Dann ein kleiner Spruch:
"Jau! Ihr im Recht, sie ist definiert!"

Fertig!

Es ist allerdings etwas mentale Stärke erforderlich, einen Irrtum 
zuzugeben.
Dabei wird es doch meistens honoriert, eine Schwäche oder Irrtum 
zuzugeben.
Es macht menschlich. ​Im Irrtum zu verharren ist dagegen eher blamabel.
Richtig peinlich ist es natürlich, wenn die Behauptung schwarz auf weiß 
widerlegbar ist.

Stellt man sich nicht seinen Irrtümern, gibt es negative Folgen zu 
tragen:
1. Man sinkt in der Achtung der anderen
2. Auch falls man mal recht hat, wird das nicht mehr wahrgenommen (wer 
drei mal lügt...)
3. Man blockiert sich selber, lernt nicht mehr dazu, denn lernen geht 
über die Einsicht
4. Die Leute, denen man die Schuld in die Schuhe schiebt, werden sich 
pikiert abwenden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.