Posted on

Übung 2

Fehlerbehandlung, generisches Sortieren

FolienAufgabe

Codebeispiel aus der Tafelübung

Ein Programm, dass 10 Zufallszahlen sortiert:

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

static int cmp(const void *a, const void *b) {
	const int *x = a;
	const int *y = b;

	if (*x < *y) {
		return -1;
	} else if (*x == *y) {
		return 0;
	} else {
		return +1;
	}
}

int main(void) {
	int len = 10;
	int *array = malloc(len * sizeof(int));  // TODO Fehlerbehandlung

	srand(4711); /* RNG initialisieren */
	for (int i = 0; i < len; i++) {
		array[i] = rand() % 42;
		fprintf(stderr, "%d\n", array[i]);
	}

	qsort(array, len, sizeof(int), cmp);

	for (int i = 0; i < len; i++) {
		int err = fprintf(stdout, "%d\n", array[i]);
		if (err < 0) {
			perror("fprintf");
			fprintf(stderr, "errno: %d\n", errno);
			exit(EXIT_FAILURE);
		}
	}

	int err = fflush(stdout);
	if (err != 0) {
		perror("fflush");
		exit(EXIT_FAILURE);
	}

	free(array);
	exit(EXIT_SUCCESS);
}