Problem bei Variablenlänge bei sscanf



  • @Swordfish Das ist das Jesus-Baby das weint.



  • @Peter-Viehweger Da siehste mal was Du anrichtest!!


  • Mod

    @Peter-Viehweger : Da vielleicht nicht so richtig rüber kommt, was an dem Code schlecht ist, sondern nur dass er schlecht ist (Die Kritik von @DocShoe geht leider ziemlich an den Problemen vorbei und ist sogar teils falsch):

    • Errorcode als Rückgabewert ist ja ok, aber tu es halt auch!
    • Errorcode nicht nur vergessen, du hast halt überhaupt nix drin, dass deine Funktion bei unerwarteter Eingabe nicht irgendwelchen Unsinn macht
    • Du hast noch nie Funktionen für C-Strings geschrieben, oder? Das sieht man an deinem Programmiermuster: Länge messen indem man komplett zum Ende geht, dann bis zur Länge durchgehen und irgendwas machen. Kommt dir das nicht irgendwie unnötig gedoppelt vor? Stattdessen einfach bis zum Ende durchgehen und dabei machen, was man will. Länge unnötig.
    • Dafür, dass die Lösung "maßgeschneidert" sein soll, ist sie erstaunlich allgemein. Denn dein Problem war ja das Einlesen von zwei Zahlen, deine "Lösung" ist das Umwandeln eines C-Strings in eine Zahl. Wobei das aber eher ein Pluspunkt ist, denn wiederverwertbare, allgemeine Funktionen sind gut. Du hast aber halt etwas unnötigen Overhead.
    • Viele weitere Kleinigkeiten, z.B. fehlende const-Correctness
    • PS: Krasse Funktionsfehler, der Code funkioniert nicht einmal und du hast ihn offensichtlich nicht getestet. Siehe nächster Beitrag

    Besser:

    • Im Zweifelsfall immer die Standardbibliothek zum Vorbild nehmen (oder besser: Standardbibliothek nehmen!). Wobei das hier etwas doof ist, denn es gibt zwei Funktionen für die gleiche Aufgabe, atoi, und strtol & Co. Da muss man jetzt leider wissen (oder sich beim Lesen der Beschreibungen denken), dass strtol das neue, verbesserte atoi ist. Denn atoi hat einige Fehler in der Schnittstelle. Also mal strtol angucken und nachmachen (oder besser: Direkt benutzen!)
    • Zum Nachmachen brauchst du aber nicht weit gucken, denn @Swordfish hat es ziemlich perfekt vorgemacht. Daher: Die Lösung von Swordfish angucken und komplett verstehen. Jedes einzelne Zeichen. Er hat sich extra Mühe gegeben und nur die nötigsten der schwierigen Schreibweisen für C-Stringverarbeitung genutzt. Der "echte" Code von strtol ist garantiert eine Nummer schlimmer.


  • @SeppJ sagte in Problem bei Variablenlänge bei sscanf:

    Viele weitere Kleinigkeiten, z.B. fehlende const-Correctness

    Ähm. Die Endlosschleife? Redeklaration eines Parameters? Kleinigkeiten? 😉


  • Mod

    @Swordfish sagte in Problem bei Variablenlänge bei sscanf:

    @SeppJ sagte in Problem bei Variablenlänge bei sscanf:

    Viele weitere Kleinigkeiten, z.B. fehlende const-Correctness

    Ähm. Die Endlosschleife? Redeklaration eines Parameters? Kleinigkeiten? 😉

    Da habe ich gelesen, was ich lesen wollte. "Jaja, da berechnet er die Länge, typischer Noobfehler, da schreibe ich jetzt die Standarderklärung zu." Ohne zu gucken, dass das in diesem Fall nicht einmal funktioniert. Uff. Ja, das ist ziemlich übel. Ich hätte gedacht, dass man solchen Code wenigstens einmal ausprobiert vorm Posten. Er sieht zumindest vom Weiten gesehen aus wie man so etwas als Anfänger machen würde und funktionieren könnte.



  • Also ich glaube, dass man jeden noch so schlechten Code bzw. "nur funktionierende" Programme immer mit "Strg + h" verbessern kann und dass ein schlechtes Programm besser ist, als ein nicht funktionierendes Programm.

    Das grundlegende Problem ist aber, dass der TE weder die Standardfunktionen kennt, noch dazu in der Lage ist, diese selbst zu implementieren.



  • @Peter-Viehweger sagte in Problem bei Variablenlänge bei sscanf:

    noch dazu in der Lage ist, diese selbst zu implementieren.

    Bist du doch selbst nicht, nichtmal ansatzweise. Das demonstrierte Niveau macht deine Einschätzungen völlig irrelevant.
    Geh' deinen Code fixen ... Feedback hast du genug bekommen und reagierst darauf mit "ich glaube". Dein Verhalten erinnert mich unangenehm an einen anderen User ...


  • Mod

    @Peter-Viehweger sagte in Problem bei Variablenlänge bei sscanf:

    dass ein schlechtes Programm besser ist, als ein nicht funktionierendes Programm.

    Das ist sowas von nicht wahr. Und dein Code funktioniert nicht!



  • @Peter-Viehweger Das Problem ist dass du ein ganz schlechter Programmierer bist und einem Anfängen ganz üblen, kaputten Quatsch als Beispiel hinlegst. Was soll der Scheiss? Lass das.

    Wenn dich das Thema interessiert, kannst du gern einen eigenen Thread aufmachen und deinen Ansatz dort posten, mit der Bitte um Kommentare/Verbesserungsvorschläge. Die Leute im Forum interessiert sowas im Allgemeinen und du wirst da sicher nützliche Antworten bekommen.

    Aber bitte nimm Abstand davon hier andere Anfänger zu schädigen indem du ihnen Dinge empfiehlst die wie gesagt einfach nur übel schlecht sind. Also abgesehen davon dass sie nicht funktionieren.

    Also ich glaube, dass man jeden noch so schlechten Code bzw. "nur funktionierende" Programme immer mit "Strg + h" verbessern

    Ich glaube dir dass du das glaubst. Aber es stimmt nicht. Gute Namen/Bezeichner sind zwar ein sehr wichtiger Teil, aber lange nicht alles. Das Problem an deinem Code sind nicht die Bezeichner.



  • @Peter-Viehweger Zwischen "schlecht" und "nicht funktionieren" liegt meistens nur ein Injektion,- im PHP zumindest


Anmelden zum Antworten