Programmeringsmetodik-tentamen 2010-11-04: Programmet make-some-data.c

Ladda ner

/* make-some-data.c -- skapar en textfil med slumpmässiga mätvärden */

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <errno.h>
#include <string.h>

#ifdef _WIN32
    #include <conio.h>
#endif

void usage(void) {
    fprintf(stderr, "Skriv: make-some-data  ANTAL-VÄRDEN  SENSOR-STORLEK  FILNAMN\n");
    #ifdef _WIN32
        _getch();
    #endif
    exit(EXIT_FAILURE);
}

int main(int argc, char *argv[]) {
    unsigned long antal; /* En vanlig int är ofta bara 32 bitar, även på 64-bitarssystem */
    unsigned long sida;
    unsigned long i;
    FILE *filen;

    if (argc != 4)
        usage();
    if (sscanf(argv[1], "%lu", &antal) != 1)
        usage();
    if (sscanf(argv[2], "%lu", &sida) != 1)
        usage();
    filen = fopen(argv[3], "w");
    if (filen == NULL) {
        fprintf(stderr, "Det gick inte att skriva filen '%s'.\n", argv[3]);
        fprintf(stderr, "Möjlig felorsak: %s (felkod %d).\n", strerror(errno), errno);
        #ifdef _WIN32
            _getch();
        #endif
        exit(EXIT_FAILURE);
    }
    srand((unsigned int)time(NULL));
    for (i = 0; i < antal; ++i)
        fprintf(filen, "%lu %lu %f\n", rand() % sida, rand() % sida, (double)rand() / RAND_MAX);
    fclose(filen);

    printf("Klart. Skrev %lu rader på filen '%s'.\n", antal, argv[3]);

    #ifdef _WIN32
        _getch();
    #endif

    return EXIT_SUCCESS;
}


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 3 november 2010