Ik denk dat de code een stuk leesbaarder zou zijn als je 'm fatsoenlijk zou inspringen; je kunt dan beter zien hoe lusjes en if-statements in elkaar steken. Er zijn verschillende manieren omdat dat te doen en welke je kiest maakt niet heel veel uit (het is een beetje een religieuze kwestie) zolang je de gekozen methode tenminste consistent door voert. Ik snap bijvoorbeeld niet hoe je de laatste paar regels van je programma kan begrijpen; ik kan het tenminste niet zonder ze opnieuw te formatteren en ik ben toch een ervaren C-programmeur.
Een gangbare keuze is: accolades (
{ en
} ) staan altijd alleen op een legel regel. Alle tekst tussen een paar accolades wordt extra ingesprongen. Er zijn verder varianten waarbij er wel code voor de openende accolade mag staan op een lege regel wordt geplaatst (zoals OneOfBorg bijvoorbeeld doet) waarmee ruimte bespaard wordt. Er loopt hier ook iemand rond die de accolades zelf ook al inspringt.
Verder zou je wel wat zinnigere namen voor je variabelen kunnen kiezen. Daarmee kun je je code veel begrijpelijker maken (en dan hoef je weer minder commentaar toe te voegen). Namen als 'aap' en 'aap1' slaan nergens op. 'var1' en 'var2' ook niet trouwens;
natuurlijk zijn het variabelen. Als je echt niets beters weet, noem ze dan tenminste
array1 en
array2 ofzo.
Tenslotte gebruik je een aantal constructies die ongeldig zijn in C. Je gebruikt waarschijnlijk een vergevende C++ compiler die ze wel pikt, maar dat soort constructies gebruiken is vragen om moeilijkheden.
• In C kun je geen commentaarregel beginnen met //. Commentaar moet tussen /* en */ staan.
• In C moeten alle variabele-declaraties bovenaan de scope (dus direct na een openende accolade: { ) staan. Je moet dus ofwel meer scopes introduceren of als je variabele-declaraties naar bovenin je main() functie verplaatsen.
• In C (en ik dacht ook C++) is het niet toegestaan om de grootte van een array met een variabele te intialiseren; je gebruikt zo'n constructie:
C:
1
2
3
4
5
6
7
| int lengte;
scanf("%d", &lengte);
{
int array[lengte]; /* MAG NIET! */
} |
Je moet een constante (in C++) of zelfs een letterlijke waarde (in C; bijvoorbeeld '10' of een definitie zoals jouw BUFFER die naar een letterlijke waarde omgezet wordt) gebruiken. Als je echt een dynamische lengte wil hebben, moet je de array dynamisch alloceren.
[
Voor 3% gewijzigd door
Soultaker op 25-09-2004 17:27
]