Βοηθητικές συναρτήσεις

Επικεφαλίδα

#include <stdlib.h>

Περιλαμβάνει

Συναρτήσεις μετατροπής αριθμών, χρήσης δυναμικής μνήμης (βλ. δυναμική διάθεση μνήμης), λειτουργίας στο περιβάλλον του λειτουργικού συστήματος και χρήσης ταξινομημένων πινάκων.

Βασικές συναρτήσεις

atof
Μετατρέπει συμβολοσειρά σε double
atol
Μετατρέπει συμβολοσειρά σε long
atoi
Μετατρέπει συμβολοσειρά σε int
abs
Επιστρέφει την απόλυτη τιμή ενός int
max
Επιστρέφει το μέγιστο δύο αριθμών
min
Επιστρέφει τον ελάχιστο δύο αριθμών
rand
Επιστρέφει έναν ψευδοτυχαίο αριθμό 0 - RAND_MAX
srand
Καθορίζει τη βάση εκκίνησης της rand
malloc
Δεσμεύει και επιστρέφει δυναμική μνήμη
free
Ελευθερώνει δυναμική μνήμη
realloc
Αλλάζει το μέγεθος ενός τμήματος δυναμικής μνήμης
exit
Τερματίζει το πρόγραμμα
system
Εκτελεί εντολή του λειτουργικού συστήματος
getenv
Επιστρέφει την τιμή μιας μεταβλητής του λειτουργικού συστήματος
qsort
Ταξινομεί έναν πίνακα
bsearch
Δυαδική αναζήτηση σε ταξινομημένο πίνακα

Παράδειγμα

Το παρακάτω παράδειγμα γεμίζει έναν πίνακα με ψευδοτυχαίους αριθμούς, τον ταξινομεί και επιτρέπει στο χρήστη να ψάξει για έναν αριθμό μέσα στον πίνακα.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>


/*
 * Qsort/bsearch comparison function
 */
int
compare(const int *a, const int *b)
{
        return (*a - *b);
}

/*
 * Print an integer table contents using a given label
 */
void
dump_int_table(char *label, int *table, int nelem)
{
        int i;

        printf("%s\n", label);
        for (i = 0; i < nelem; i++)
                printf("(%d%d) ", i, table[i]);
        putchar('\n');
}

main()
{
        int *tbl;                       /* Integer table */
        char buff[10];                  /* User input */
        int n, i;                       /* User number, counter */
        int *pos;                       /* Found position */
        const int TABLE_SIZE = 64;

        /* Randomize the random number generator using current time */
        srand(time(NULL));

        /* Allocate table memory */
        tbl = (int *)malloc(TABLE_SIZE * sizeof(int));

        /* Fill table with random numbers (0 - 2 * TABLE_SIZE) */
        for (i = 0; i < TABLE_SIZE; i++)
                tbl[i] = rand() % (TABLE_SIZE * 2);
        dump_int_table("Table with random numbers", tbl, TABLE_SIZE);

        /* Sort the table contents */
        qsort(tbl, TABLE_SIZE, sizeof(int), compare);
        dump_int_table("Sorted table with random numbers", tbl, TABLE_SIZE);

        /* Read and convert a number from the user (without using scanf) */
        printf("Search for which number? (0-%d):"2 * TABLE_SIZE);
        fgets(buff, sizeof(buff), stdin);
        n = atoi(buff);

        /* Search for the number and report result */
        pos = bsearch(&n, tbl, TABLE_SIZE, sizeof(int), compare);
        if (pos)
                printf("The number %d is located at table position %d\n",
                        n, pos - tbl);
        else
                printf("The number %d is not in the table\n");

        /* Free memory and exit - not strictly needed */
        free(tbl);
        exit(0);
}