Biblioteca de rutinas de conversión estándar stdlib.h

En esta biblioteca se incluyen rutinas de conversión entre tipos. Nos permiten convertir cadenas de caracteres a números, números a cadenas de caracteres, números con decimales a números enteros, etc.

Función atoi()

Convierte una cadena de caracteres a un entero. Puede leerse como conversión de "ASCII to Integer".

Sintaxis:

int atoi(const char *s);

La cadena puede tener los siguientes elementos:

  • Opcionalmente un conjunto de tabuladores o espacios.
  • Opcionalmente un carácter de signo.
  • Una cadena de dígitos.

El formato de la cadena de entrada sería: [ws] [sn] [ddd]

El primer carácter no reconocido finaliza el proceso de conversión, no se comprueba el desbordamiento, es decir si el número cabe en un int. Si no cabe, el resultado queda indefinido.

Valor de retorno:

atoi devuelve el valor convertido de la cadena de entrada. Si la cadena no puede ser convertida a un número int, atoi vuelve con 0.

Al mismo grupo pertenecen las funciones atol y atof, que devuelven valores long int y float. Se verán en detalle en otros capítulos.

Función system()

Ejecuta un comando del sistema o un programa externo almacenado en disco. Esta función nos será muy útil para detener el programa antes de que termine.

Si compilas los ejemplos, ejercicios o tus propios programas usando un compilador de Windows para consola, como Dev-C++, habrás notado que la consola se cierra cuando el programa termina, antes de que puedas ver los resultados del programa, para evitar eso podemos añadir una llamada a la función system para ejecutar el comando del sistema "pause", que detiene la ejecución hasta que se pulse una tecla. Por ejemplo:

#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
   cout << "Hola, mundo." << endl;
   system("pause");
   return 0;
}

De este modo el programa se detiene antes de devolver el control y de que se cierre la consola.

Nota: en este capítulo se menciona el concepto macro.
Una macro es una fórmula definida para el preprocesador. Es un concepto que se estudia en los capítulos 13 y 23. Consiste, básicamente, en una fórmula que se sustituye por su valor antes de compilar un programa, de eso se encarga el preprocesador.
La diferencia principal es que las funciones se invocan, y la ejecución del programa continúa en la dirección de memoria de la función, cuando ésta termina, retorna y la ejecución continúa en el programa que invocó a la función. Con las macros no es así, el código de la macro se inserta por el preprocesador cada vez que es invocada y se compila junto con el resto del programa, eso elimina los saltos, y aumenta el código.
De todos modos, no te preocupes demasiado por estos conceptos, el curso está diseñado para tener una progresión más o menos lineal y estos temas se tratan con detalle más adelante.

Función abs()

Devuelve el valor absoluto de un entero.

Sintaxis:

int abs(int x);

abs devuelve el valor absoluto del valor entero de entrada, x. Si se llama a abs cuando se ha incluido la biblioteca "stdlib.h", se la trata como una macro que se expandirá. Si se quiere usar la función abs en lugar de su macro, hay que incluir la línea:

#undef abs

en el programa, después de la línea:

#include <stdlib.h>

Esta función puede usarse con "bcd" y con "complejos".

Valor de retorno:

Esta función devuelve un valor entre 0 y el INT_MAX, salvo que el valor de entrada sea INT_MIN, en cuyo caso devolverá INT_MAX. Los valores de INT_MAX e INT_MIN están definidos en el fichero de cabecera "limit.h".

Función rand()

Generador de números aleatorios.

Sintaxis:

int rand(void); 

La función rand devuelve un número aleatorio entre 0 y RAND_MAX. La constante RAND_MAX está definida en stdlib.h.

Valor de retorno:

rand devuelve un número entre 0 y RAND_MAX.

Función srand()

Inicializa el generador de números aleatorios.

Sintaxis:

void srand(unsigned semilla);

La función srand sirve para cambiar el origen del generador de números aleatorios.

Valor de retorno:

srand no devuelve ningún valor.

Comentarios de los usuarios (4)

dani
2012-03-24 22:30:56

xk no me reconoce la direccion ls funcion system?

#include <stdlib.h>
#include <iostream>

using namespace std;

int main()
{

    
    system("C:\\Archivos de programa\\Mozilla Firefox\\firefox.exe");
    return 0;
}
Steven R. Davidson
2012-03-25 21:08:03

Hola Dani,

El problema es que la cadena que pasas tiene espacios y la consola, o mejor dicho el intérprete de comandos, ve la cadena como una serie de subcadenas separadas por espacios. Intenta ejecutar el comando "C:\Archivo" con el resto de la cadena (o cadenas) como parámetros.

La solución es agregar una pareja de comillas para todo el comando que es toda la cadena. Esto sería,

system( "\"C:\\Archivos de programa\\Mozilla Firefox\\firefox.exe\"" );

Por cierto, bajo C++ deberías usar el nombre <cstdlib>.

Espero que esto te ayude.

Steven

dani
2012-03-28 16:30:32

Muchas gracias Steven, llevaba mucho tiempo tratando de resolver este problema.

nelson
2012-09-18 08:52:19

hola estoy trabajando con un juego que es RPG se llama helbreath. bueno resulta que cuando voy a los codigo en c++ 6 me dices que no reconoces las siguientes funciones

#include <windows.h>

#include <winbase.h>

#include <windowsx.h>

#include <winsock2.h>

//#include <winsock.h>

#include <stdlib.h>

#include <stdio.h>

#include <memory.h>

#include <malloc.h>

me gustaria saber si me puede decir por que no me recococes esas funciones? gracias