this post was submitted on 28 Jun 2025
83 points (96.6% liked)

ich_iel

3692 readers
687 users here now

Die offizielle Zweigstelle von ich_iel im Fediversum.

Alle Pfosten müssen den Titel 'ich_iel' haben, der Unterstrich darf durch ein beliebiges Symbol oder Bildschriftzeichen ersetzt werden. Ihr dürft euch frei entfalten!


Matrix


📱 Empfohlene Schlaufon-Applikationen für Lassmich


Befreundete Kommunen:

!wir_iel@feddit.org

!i_itrl@feddit.org

!ich_ial@lemmy.world

!zunftgemeinde@feddit.org

!ki_iel@feddit.org


Sonstiges:

Zangendeutsch-Wörterbuch


Regeln:

1. Seid nett zueinander

Diskriminierung anderer Benutzer, Beleidigungen und Provokationen sind verboten.

2. Pfosten müssen den Titel 'ich_iel' oder 'ich iel' haben

Nur Pfosten mit dem Titel 'ich_iel' oder 'ich iel' sind zugelassen. Alle anderen werden automatisch entfernt.

Unterstrich oder Abstand dürfen durch ein beliebiges Textsymbol oder bis zu drei beliebige Emojis ersetzt werden.

3. Keine Hochwähl-Maimais oder (Eigen)werbung

Alle Pfosten, die um Hochwählis bitten oder Werbung beinhalten werden entfernt. Hiermit ist auch Eigenwerbung gemeint, z.b. für andere Gemeinschaften.

4. Keine Bildschirmschüsse von Unterhaltungen

Alle Pfosten, die Bildschirmschüsse von Unterhaltungen, wie beispielsweise aus WasistApplikaton oder Zwietracht zeigen, sind nicht erlaubt. Hierzu zählen auch Unterhaltungen mit KIs.

5. Keine kantigen Beiträge oder Meta-Beiträge

ich_iel ist kein kantiges Maimai-Brett. Meta-Beiträge, insbesondere über gelöschte oder gesperrte Beiträge, sind nicht erlaubt.

6. Keine Überfälle

Wer einen Überfall auf eine andere Gemeinschaft plant, muss diesen zuerst mit den Mods abklären. Brigadieren ist strengstens verboten.

7. Keine Ü40-Maimais

Maimais, die es bereits in die WasistApplikation-Familienplauderei geschafft haben oder von Rüdiger beim letzten Stammtisch herumgezeigt wurden, sind besser auf /c/ichbin40undlustig aufgehoben.

8. ich_iel ist eine humoristische Plattform

Alle Pfosten auf ich_iel müssen humorvoll gestaltet sein. Humor ist subjektiv, aber ein Pfosten muss zumindest einen humoristischen Anspruch haben. Die Atmosphäre auf ich_iel soll humorvoll und locker gehalten werden.

9. Keine Polemik, keine Köderbeiträge, keine Falschmeldungen

Beiträge, die wegen Polemik negativ auffallen, sind nicht gestattet. Desweiteren sind Pfosten nicht gestattet, die primär Empörung, Aufregung, Wut o.Ä. über ein (insbesonders, aber nicht nur) politisches Thema hervorrufen sollen. Die Verbreitung von Falschmeldungen ist bei uns nicht erlaubt.


Bitte beachtet auch die Regeln von Feddit.org

founded 1 year ago
MODERATORS
 

Literarisch ich, nachdem ich nach viel zu viel Zeitinvestment endlich etwas automatisiert habe, was nicht unbedingt nötig gewesen wäre zu automatisieren (der lexikalische Analysator aus meinem letzten Pfosten funktioniert nun und ist mit ca 40 Zeilen auch relativ schlank. Er ist nicht perfekt, aber er funktioniert).

you are viewing a single comment's thread
view the rest of the comments
[–] doeknius_gloek@discuss.tchncs.de 10 points 2 days ago (10 children)

Was tut ein lexikalischer Analysator?

[–] cows_are_underrated@feddit.org 5 points 2 days ago (6 children)

Deutsch für Parser.

Beispiel: ich habe im Code die Variable "Distanz" deren Wert in einer Datei steht (bspw. Distanz 50). Der Parser findet den entsprechenden Wert der Variable in der Datei und stellt ihn dir im code zur Verfügung.

[–] doeknius_gloek@discuss.tchncs.de 2 points 2 days ago* (last edited 2 days ago) (5 children)

Wie hast du's letztendlich gemacht? Ich habe inzwischen deinen vorherigen Post gelesen und gesehen, dass deine Konfigurationsdatei im Grunde eine vereinfachte .ini ist - pro Zeile ein Key-Value Paar, getrennt durch ein "=”.

Mein naivster Ansatz wäre, die Datei einzulesen, an allen EOLs zu splitten, um alle Key-Value Paare zu bekommen und dann wiederrum am = zu splitten?

[–] cows_are_underrated@feddit.org 3 points 2 days ago* (last edited 2 days ago) (2 children)

Hier ist der Code dafuer: https://pastebin.com/EuE55X5t

Ist bei weitem nicht perfekt, aber das reicht. Werde den auch noch etwas weiter ausbauen um ein Errorhandeling zu ermoeglichen.

Habe dafür die Syntax der Init Datei etwas geändert und zwar dass aus Variable = Wert; jetzt simpel Variable Wert wird.

[–] doeknius_gloek@discuss.tchncs.de 2 points 2 days ago (1 children)

Cool, danke für den Code! Hast du Interesse an Feedback von einem Webentwickler, der in seinem Leben noch nicht eine Zeile C geschrieben hat?

[–] cows_are_underrated@feddit.org 2 points 2 days ago (1 children)

Feedback dürft ihr immer gerne geben.

Okay, also die folgenden Punkte sind mir aufgefallen:

  1. Du könntest deine Konfigurationsvariablen in einem Struct gruppieren, dann kannst du später sowas wie config.exposureTime machen.
  2. Eine while-Schleife bietet sich immer dann an, wenn du die Anzahl an Schleifendurchläufen nicht kennst - in deinem Code kennst du deine MAX_ROWS aber schon, daher würde ich eher eine for-Schleife nutzen (wobei ich gerade nicht weiß, wie sich das mit fscanf verträgt...)
  3. Die Reihenfolge deiner Variablen muss in der Konfigurationsdatei exakt so sein, wie dein Code es erwartet. Der Key deiner Key-Value Paare wird nicht abgeglichen.
  4. Wenn du den ersten Punkt umsetzt, würde ich empfehlen, dass initalizeVariables ein Config Struct returned, anstatt globale Variablen zu füllen. Macht's wartbarer.
  5. Jemand anderes hat bereits den möglichen Buffer Overflow bei fscanf angesprochen.
  6. Generell müsste man noch einiges an Errorhandling hinzufügen, um das Programm robuster zu machen
  7. Vielleicht willst du irgendwann mal andere Konfigurationswerte eintragen, bisher gehen nur (Gleitkomma)zahlen

Ich habe mich mal hingesetzt und das zum Anlass genommen, meinen ersten (und wahrscheinlich auch einzigen) C-Code zu schreiben. Disclaimer: Das Ergebnis macht mich nicht besonders glücklich, aber ich hasse mein Leben nicht genug, um weitere Verbesserungsideen auszuprobieren. C scheint mir doch recht alt/limitiert und was bei anderen Sprachen Standardfeatures sind, sucht man bei C vergebens. Eine Map wäre z.B. sehr praktisch gewesen, oder ein switch Statement, welches mit Strings umgehen kann oder überhaupt ein String Datentyp statt Char-Arrays mit festen Längen... Uff ey.

Egal, hier mein (nicht besonders guter und brüchiger) Code: https://pastebin.com/hWCFSvQd

[–] d_k_bo@feddit.org 1 points 2 days ago* (last edited 2 days ago)

(IBKCP: Ich bin kein C-Programmierer)

Versuchter Klugschiss

typedef struct {
    char* name[VARIABLE_NAME_LENGTH];
    float value;
} variable;
fscanf(file, "%s %f", &data[i].name, &data[i].value)

Das sieht mir gefährlich nach einem möglichen Pufferüberlauf aus. Wenn die Variable länger ist als VARIABLE_NAME_LENGTH - 1 (1 Zeichen wird für \0 benötigt), dann ist der Platz für die Zeichenkette zu klein.

https://stackoverflow.com/questions/18845234/preventing-buffer-overflow-when-using-fscanf#18854941


Edith: Was passiert eigentlich, wenn die Datei nicht dem von fscanf erwarteten Format entspricht? Ich glaube, da müssen noch irgendwo Fehler gehandhabt werden, sonst kommt es im späteren Verlauf wahrscheinlich zu Segmentierungsfehlern.

load more comments (2 replies)
load more comments (2 replies)
load more comments (5 replies)