Dateien einlesen und vergleichen



  • Da ich in der Testgeräteentwicklung einer Navigationsfirma arbeite, habe des ständig mit solchen und
    vielen ähnlichen Problemen zu tun.

    Es sind Prüfprogramme und Simulatoren für unsere Produkte zu entwickeln, damit man bei diesen sowohl die Designtests als auch die Endkontrolle sinnvoll durchführen kann



  • PS: falls einer für StrRmLe eine bessere Implementierung weis, ich bin neugierig?

    ich würds so machen

    void StrRmLe(char *s){
    int x=strlen(s);
    for(char *p=s;isspace(*p);++p);
    if(p-s)memmove(s,p,x+1-(p-s));
    }
    


  • @Windalf
    Hast du den Code auch getestet??



  • @AJ
    äh nein, wie immer nicht 😃
    direkt so ins forum gehackt... hast du schon einen fehler gefunden? 😉

    aber was hälst du von der variante... nicht besonders schön aber schön wenig zeichen... 😃

    void remove_spaces(char*s){for(;*s==32;)memmove(s,s+1,strlen(s));}
    


  • Schlecht, da du 32 anstatt ' ' verwendest (mal davon abgesehen, dass das nicht das einzigste WhitSpaceChar ist => Themaverfehlung) und außerdem der Code extram langsam ist, weil du bei jedem Schleifendurchlauf, den kompletten übrigen String durchläufst (strlen()) und dann auch noch den kompletten übrigen String kopierst (also nochmal ein kompletter durchlauf des Strings).

    Die erste Variante, die gepostest hast, war besser. Wobei man du da auch einen unnötigen Durchlauf produzierst, indem du am Anfang strlen() verwendest und dann noch memmove(). Darum hab ich auch bei meiner Variante das strcpy verwendet (nur einmal ein Durchlauf; geh ich davon aus). Außerdem bin ich mir nicht sicher, ob isspace() nicht auch das Stringendezeichen als WhiteSpaceChar erkennt. Wenn ja, dann können bei deiner Variante Fehler auftreten. Aja und was den Fehler angeht, den ich gefunden habe: Wie lange sind lokale Variablen gültig?? (Tipp: Schau dir deine Schleife an)



  • Schlecht, da du 32 anstatt ' ' verwendest

    klar das spart mir ja ein ascii-zeichen...

    und außerdem der Code extram langsam ist, weil du bei jedem Schleifendurchlauf, den kompletten übrigen String durchläufst (strlen())

    ich hab ja auch gesagt nicht besonders schön aber schön wenig zeichen... 😉

    Aja und was den Fehler angeht, den ich gefunden habe: Wie lange sind lokale Variablen gültig?? (Tipp: Schau dir deine Schleife an)

    stimmt zu diesem teil verleitet mich mein visual c des öfteren (und ich sollte mir das abgewöhnen) weil er dort im schleifenrumpf deklarierte variablen fälschlicher weise als im dazugehörgen block gültige variable deklariert... jo ist ein fehler wenn mans nicht mit nem vc-compiliert und damit nicht ansi-standard...muss ich dir leider (aber auch nur ausnahmsweise 😃 ) recht geben...



  • Was bringt es dir so wenig Zeichen wie möglich zu haben und dafür (zumindest) Lesbarkeit und Performance einzubüßen?? (der compilierte Code wird deswegen auch nicht weniger; vielleicht sogar das Gegenteil)

    Ich hab das wenig schön übrigens auf die Formatierung bezogen (die ist nämlich auch nicht gerade schön) 😉



  • Ich hab das wenig schön übrigens auf die Formatierung bezogen (die ist nämlich auch nicht gerade schön)

    Die alte Leier also 😃



  • Windalf schrieb:

    Ich hab das wenig schön übrigens auf die Formatierung bezogen (die ist nämlich auch nicht gerade schön)

    Die alte Leier also 😃

    Im Chaos findet man sich hald schwerer zurecht 😉



  • Im Chaos findet man sich hald schwerer zurecht

    Überall wo ich bin herrscht Chaos...leider kann ich nicht überall sein 😃


Anmelden zum Antworten