C stdlib (stdlib.h) Library

The stdlib.h library in C is an essential part of the C Standard Library. It provides a collection of functions for performing various general-purpose tasks such as memory allocation, process control, conversions, and more. This comprehensive guide by The Coding College will introduce you to the stdlib.h library, its functions, and how to use them effectively in your programs.

What is stdlib.h?

The stdlib.h library, short for Standard Library, contains function prototypes and macros used for:

  • Memory allocation and management.
  • Converting strings to numbers.
  • Generating random numbers.
  • Exiting programs.

To use these functions, include stdlib.h in your program as follows:

#include <stdlib.h>

Key Functions in stdlib.h

Here are the most frequently used functions provided by the stdlib.h library:

1. Memory Management Functions

malloc (Memory Allocation)

Allocates a block of memory dynamically.

#include <stdlib.h>
int main() {
    int *arr = (int *)malloc(5 * sizeof(int)); // Allocates memory for 5 integers
    if (arr == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }
    free(arr); // Free allocated memory
    return 0;
}

calloc (Contiguous Allocation)

Allocates memory and initializes it to zero.

#include <stdlib.h>
int main() {
    int *arr = (int *)calloc(5, sizeof(int)); // Allocates and initializes memory for 5 integers
    if (arr == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }
    free(arr); // Free allocated memory
    return 0;
}

realloc (Reallocate Memory)

Resizes a previously allocated memory block.

#include <stdlib.h>
int main() {
    int *arr = (int *)malloc(2 * sizeof(int));
    arr = (int *)realloc(arr, 5 * sizeof(int)); // Resize memory
    free(arr); // Free allocated memory
    return 0;
}

free

Releases dynamically allocated memory.

2. String to Number Conversion Functions

atoi

Converts a string to an integer.

#include <stdlib.h>
int main() {
    char str[] = "123";
    int num = atoi(str);
    printf("The number is: %d\n", num);
    return 0;
}

atof

Converts a string to a floating-point number.

#include <stdlib.h>
int main() {
    char str[] = "12.34";
    double num = atof(str);
    printf("The number is: %f\n", num);
    return 0;
}

strtol / strtod

Converts strings to long integers or doubles with more control.

3. Random Number Functions

rand

Generates a random number.

#include <stdlib.h>
#include <stdio.h>
int main() {
    printf("Random number: %d\n", rand());
    return 0;
}

srand

Seeds the random number generator to produce different sequences.

#include <stdlib.h>
#include <time.h>
int main() {
    srand(time(0)); // Seed the random number generator
    printf("Random number: %d\n", rand());
    return 0;
}

4. Process Control Functions

exit

Terminates the program.

#include <stdlib.h>
int main() {
    printf("Exiting the program.\n");
    exit(0);
}

system

Executes a shell command.

#include <stdlib.h>
int main() {
    system("dir"); // Lists directory contents (Windows)
    return 0;
}

5. Sorting and Searching Functions

qsort

Performs quicksort on an array.

#include <stdlib.h>
int compare(const void *a, const void *b) {
    return (*(int *)a - *(int *)b);
}
int main() {
    int arr[] = {5, 3, 1, 4, 2};
    qsort(arr, 5, sizeof(int), compare);
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

bsearch

Performs binary search on a sorted array.

Macros in stdlib.h

Some useful macros defined in stdlib.h include:

  • EXIT_SUCCESS: Indicates successful program termination.
  • EXIT_FAILURE: Indicates unsuccessful program termination.
  • NULL: Represents a null pointer.

Practical Tips

  1. Memory Management: Always free memory after use to prevent memory leaks.
  2. Error Handling: Check for NULL after memory allocation functions.
  3. Randomness: Seed the random number generator for non-repetitive sequences.

Conclusion

The stdlib.h library is a powerhouse of essential functions that every C programmer should master. From memory management to process control, it enables efficient programming. For more detailed tutorials, visit The Coding College, where we help you level up your coding skills with practical examples and expert tips.

Leave a Comment