Diskussion:Beispielprogramme in C/Strukturiertes Programmieren mit C
Code-Kritik zum ersten Quelltext[Quelltext bearbeiten]
Die globalen Variablen müssten nicht sein. Die machen das Programm nur schwerer verständlich weil sie die Funktionen auf undurchsichtige Weise verbinden. Dazu kommt noch das in den Funktionen teilweise die gleichen Namen für lokale Variablen verwendet werden. Das ist verwirrend.
Kandidat wird deklariert, also da wird Speicher für belegt, aber der wird nie benutzt. Die Variable dient nur dazu die Grösse von der Struktur Kanditat_s zu ermitteln. Dafür kann man diese Struktur selbst verwenden und muss keine unnütze Variable anlegen.
Für Zeichenketten sollte man den Typ char * statt uint8_t * nehmen weil der C-Standard die Frage ob char vorzeichenbehaftet ist oder nicht, offen lässt. Bei Implementierungen wo char vorzeichenbehaftet ist, hagelt es dann Warnungen vom Compiler wenn man mit einem uint8_t * Funktionen aufruft, die eigentlich vorzeichenbehaftetes char * erwarten.
Kandidat_p ist ein Array. Das sollte man auch so behandeln, statt dieser undurchsichtigen und fehleranfälligen Herumhampelei mit Zeigern. `p_reset()` ist ausserdem reichlich umständlich. Statt in einer Schleife x-mal den Pointer eins zurück zu setzen, könnte man auch einfach das x davon abziehen: Kandidat_p -= anzahlKandidaten;
Die Standard-I/O-Funktionen verwenden '\n' für neue Zeilen — nicht '\r\n'. Die Ausgabe von '\r' ist im Programm also überflüssig.
Bei der KandidatenEingabe() ist ein bisschen unschön, dass dort die Stimmen aufaddiert werden. Das gehört eher in die Verarbeitungsphase nach der Eingabe.
Es wird nicht auf Fehleingaben oder Fehler durch Überläufe usw. geachtet.
--BlackJack 15:45, 11. Nov. 2012 (CET)