stdlib.h

Esta librería contiene:
  1. conversiones de cadenas de caracteres a datos nativos
  2. Gestión de memoria dinámica

  • doble atof (const char * str) convierte a double la cadena de caracteres
  • int atoi (const char * str) convierte a int la cadena de caracteres
  • long int atol (const char * str) convierte a long int la cadena de caracteres
  • double strtod(const char *str, char **endptr) convierte a double la cadena de caracteres, y el resto de caracteres que no son los almacena en el la cadena endptr
  • long int strtol (const char * str, char ** endptr, int base) convierte a long int la cadena de caracteres, y el resto de caracteres que no son los almacena en el la cadena endptr, el tercer parámetro nos indica la base en la que está escrito el número.
  • unsigned long int strtoul (const char * str, char ** endptr, int base) convierte a unsigned long int la cadena de caracteres, el resto lo almacena en endptr y lo hace atendiendo a la base que se indique en el tercer parámetro.
  • ----------------------------------------
  • void * calloc (size_t nitems, size_t tamaño) Reserva memoria para nitems y tiene en cuenta que cada item ocupa tamaño, devuelve un puntero a la dirección de memoria del primer item. esto es reservar memoria para una matriz " tamaño nombre[nitems]; " pero hay que tener en cuenta que el puntero es de tipo void.
  • void free(void *ptr) libera la memoria reservada apuntada por el puntero que se le pasa ( generalmente obtenido a partir de una función de reserva de memoria como calloc, hay que tener en cuenta de que ese puntero no conviene perderlo porque si pasa esto no se podrá liberar, si la función recibe un puntero a null no hará nada )
  • void * malloc (tamaño_t tamaño) reserva la memoria indicada en tamaño y devuelve un puntero a void que apunta a la primera casilla (se puede considerar que esto es como la función calloc pero destinada a un único item o también se puede calcular lo que vale el array para luego hacerla funcionar como la calloc)
  • void * realloc (void * ptr, size_t size) sirve para modificar el tamaño de un array, el puntero es el que apunta el array y size es el tamaño nuevo que queremos ,el puntero que devuelve es la dirección donde está la reserva realizada.
  • -----------------------------------------
  • void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) se le pasa una matriz al primer parámetro , se le indica la longitud de esta en el segundo y en el tercero el tamaño de cada item , el ultimo parámetro es una función con la relación de orden que queremos aplicar. no devuelve nada
  • void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) la función recibe una clave un puntero al inicio de un array , la cantidad de items y el tamaño de cada uno , y finalmente llama a una función con quien evalúa (esto parece más propio de lisp que de c) la funcionar devuelve un puntero al primer elemento de la matriz (array) que hace que la función devuelva verdadero si no se da el caso apunta a null.
  • int system (const char * string) ejecuta el comando string en el sistema unix donde se ejecute (es como salir del progrma ejecutar la cadena vover al programa donde lo habíamos dejado)
  • char *getenv(const char *name) devuelve la cadena apuntada por name (esto es interesante cuando se quiere interactuar con el sistema , si le pasas "HOME" devolverá la dirección de la raiz de tu directorio , cuando se trabaje con bash se verán todas estas cosas)
  • void exit(int status) termina el programa realizando un cierre total de todos los ficheros abiertos liberando las memorias dinámicas y devolviendo todos los hilos al principal.
  • int atexit(void (*func)(void)) cuando el programa termina llama a la función func (esta función se puede invocar al principio y se ejecutara cuando termine de un modo u otro, puede tener sentido como cierre de... o verificaciones de ... )
  • void abort(void) termina el programa de golpe
  • -------------------------------------------
  • int abs (int x) devuleve el valor absoluto
  • long int labs (long int x) devuleve el valor absoluto
  • int rand(void) devuelve un entero entre 0 y RAND_MAX (podríamos decir que es aleatorio, pero hay mucho escrito sobre que es y que no aleatorio)
  • void srand(unsigned int seed) esta función inicia los números aleatorios atendiendo a una semilla que el la que los crea