C-taal voor beginners - hoofdstuk 8

extra functies en handigheden voor C


[8.1 inleiding] [8.2 system()] [8.3 clrscr()] [8.4 kbhit()] [8.5 random()] [8.6 chmod()] [8.7 isalpha()] [8.8 sleep()]


8.1 inleiding

Deze cursus behandelt de C-taal globaal gezien. C biedt echter ontelbare mogelijkheden die het programmeren vergemakkelijken en een programma krachtiger maken. Een goede compiler heeft duizenden functies, ik zal er hier een paar bespreken waarvan ik weet dat ze handig en veelgevraagd zijn. Sommige zijn niet conform de ANSI-C standaard. Enkel indien de functie tot één van de volgende headers behoort, kan zeker zijn dat elke goede compiler ze begrijpt.

assert.h locale.h stddef.h
ctype.h math.h stdio.h
errno.h setjmp.h stdlid.h
float.h signal.h string.h
limits.h stdarg.h time.h

Opmerking: denk niet meteen dat uw compiler deze functies niet begrijpt als ze niet compileren. Het probleem kan dan ook bij de gebruikte header(s) liggen. Controleer uw helpbestanden om de juiste header voor de gegeven functie te vinden.

8.2 system()

De system() functie vind ik persoonlijk één van de nuttigste. Ze wordt gebruikt om command-line (in dit geval MS-Dos) opdrachten uit te voeren in een C-programma. Alles wat onder Dos als commando geldig is kan u gebruiken, zoals md, cd, dir, format, del, enz... . Het argument wordt tussen dubbele quotes, tussen de ronde haken geplaatst:

system("cd c:/windows/command"); 

dit kan u bijvoorbeeld gebruiken om de directory te veranderen in c:\windows\command. Ik vertelde eerder dat u onder windows de slash / kan gebruiken in plaats van de dubbele \\ in een string om een enkele \ voor te stellen. U moet de header stdlib.h includeren.

8.3 clrscr()

Om het scherm te ledigen gebruikt u clrscr(). Alhoewel er geen argumenten gebruikt worden, moeten de ronde haken toch geplaatst worden:

clrscr();

Dit wordt veel gebruikt in een loop waarbij tekst op het scherm getoond wordt, om na elke doorgang het scherm te ledigen en de vorige output te verwijderen. Bij mijn compiler bevindt deze functie zich in conio.h, het zou kunnen dat u een andere header nodig heeft. Controleer uw compilerdocumentatie of helpbestand.

8.4 kbhit()

Deze functie bevindt zich bij mijn compiler ook in conio.h. Gebruik ze om een druk op het toetsenbord te controleren:

#include <stdio.h>
#include <conio.h>

int main(void)
{
    printf("Druk op een toets om verder te gaan:");
    while (!kbhit()); /* lijn 1 (zie tekst) */
    printf("\r\nA key was pressed...\r\n");
    return 0;
}

De while() op lijn 1 wil eigenlijk zeggen: "zolang er geen toets ingedrukt wordt, doe niets". Het programma zal dus wachten tot er een druk op het toetsenbord gegeven wordt.

8.5 random()

De random() functie genereert een willekeurig getal, op basis van het argument tussen de ronde haken. Elke keer als u het gebruikt plaatst u er de pre-functie randomize() voor, zonder argumenten:

randomize();
random(100);

geeft een willekeurig nummer van 0 tot 99. U kan ook variabelen of expressies als argument gebruiken zoals

randomize();
random(getal1 * getal2);

waarbij getal1 en getal2 variabelen zijn. Gebruik alleen natuurlijke waarden als argument, dus geen kommagetallen. Om de willekeurige waarde in een variabele te stoppen kan de toekenningsoperator toegepast worden:

randomize();
will_getal = random(getal1 * getal2);

Vereiste header: stdlib.h.

8.6 chmod()

De attributen van een bestand kunnen gewijzigd worden met de chmod() functie. Er staan twee argumenten tussen de ronde haken: de bestandsnaam en de modus. De modus kan "S_IWRITE" (alleen schrijven), "S_IREAD" (alleen lezen) en "S_IWRITE | S_IREAD" (schrijven en lezen) zijn. Het commando wordt als volgt gebruikt:

chmod("c:/windows/desktop/mijn_bestand.exe", S_IREAD);

Als eerste argument kan u, net zoals bij fopen() de bestandsnaam in een string variabele stoppen, om de naam van die variabele dan als argument te gebruiken. chmod() geeft een 0 terug indien succesvol uitgevoerd, een -1 als er problemen waren. Gebruik #include<sys/stat.h> om de juiste header in te voegen.

Kan uw compiler dit niet verwerken dan kan u het dos-equivalent gebruiken:

system("attrib +R c:\\windows\\desktop\\mijn_bestand.exe");

Gebruik dan een + teken om een attribuut in te stellen of een - teken om het te verwijderen. R is alleen-lezen, A is archief, H is verborgen en S is het systeemattribuut. Typ "attrib/?" in uw dos-prompt voor volledige informatie.

8.7 isalpha()

Gebruik dit simpele commando om te controleren of een teken al of niet alfabetisch is. Een voorbeeld:

#include <stdio.h>
#include <ctype.h>

int main(void)
{
char c = 'C';

if ( isalpha(c) )
    printf("%c is alfabetisch\n", c);
else printf("%c is niet alfabetisch\n", c);

return 0;
}

Includeer ctype.h.

8.8 sleep()

Om het programma een aantal seconden te laten rusten, gebruikt u sleep() met het aantal seconden als argument:

sleep(5);

zal het systeem 5 seconden laten pauzeren alvorens het volgende statement uit te voeren. Header: dos.h.


referenties

[The C Library Reference Guide]

Eric Huss

 

Verder naar hoofdstuk 9

Terug naar inleiding