La biblioteca estándar del C

Anuncio
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
PROGRAMACION APLICADA I
BIBLIOTECA ESTÁNDAR DEL C
PROF. Dra. ADDYS DE LAM
INTEGRANTES
ACEVEDO, LAUREN
8-845-560
MARTINEZ, MAURICIO
8-841-472
PAU, RICARDO
RODRIGUEZ, DAN
8-845-1130
VIVAR, LUIS E.
8-857-210
GRUPO: 1-IL-122
20 DE ABRIL DE 2011
Biblioteca Estándar del C
Índice
Introducción y objetivos……………………………………… 3
La biblioteca estándar del C………………………………..
4
La librería Stdio.h……………………………………………… 8
La librería Conio.h……………………………………………. 14
La librería Ctype.h……………………………………………. 16
La librería Stdlib.h…………………………………………… 21
La librería String.h………………………………………….
26
La librería Time.h…………………………………………..
30
La librería Math.h………………………………………….
41
Programa Ejemplo …………………………………………. 43
Conclusiones………………………………………………… 46
Bibliografía y Web-grafía…………………………………..
2
47
2011
Biblioteca Estándar del C
2011
Introducción
En el mundo actual, las tecnologías avanzan de forma impresionante a
cada segundo, y nosotros somos los que vamos a seguir con este avance.
Empezando el curso de nuestras vidas y fundando las bases de nuestra
información en el tema de la programación así como la lógica que utilizaremos
en trabajos futuros tendemos el gusto de presentarles la presente investigación
sobre La Biblioteca Estándar del C, la cual pasaremos a definir posteriormente.
Este proyecto no solo presenta aspectos del tema sino que también, profundiza
en sus subdivisiones y métodos que están poseen, dando así explicaciones,
trucos y ejemplos de los métodos propuestos.
Objetivos
Entre los objetivos tenemos:



Conocer que es la biblioteca estándar de C
Determinar cuáles son las librerías que se encuentran dentro de esta.
Mostrar todas las funciones que nos presenta el C, con sus respectivas
funciones.
3
Biblioteca Estándar del C
2011
La Biblioteca Estándar de C
La biblioteca estándar de C es una recopilación de ficheros cabecera y
bibliotecas con rutinas, estandarizadas por un comité de la Organización
Internacional para la Estandarización (ISO), que implementan operaciones
comunes, tales como las de entrada y salida o el manejo de cadenas. A
diferencia de otros lenguajes como COBOL, FORTRAN, o PL/I, C no incluye
palabras clave para estas tareas, por lo que prácticamente todo programa
implementado en C se basa en la biblioteca estándar para funcionar.
Diseño
El nombre y las características de cada función, el prototipo, así como la
definición de algunos tipos de datos y macros, se encuentran en un fichero
denominado archivo de cabecera (con extensión ".h"), pero la implementación
real de las funciones están separadas en un archivo de la biblioteca. La
denominación y el ámbito de las cabeceras se han convertido en comunes,
pero la organización de las bibliotecas sigue siendo diversa, ya que éstas
suelen distribuirse con cada compilador. Dado que los compiladores de C, a
menudo, ofrecen funcionalidades adicionales que no están especificados en
el ANSI C, la biblioteca de un compilador no siempre es compatible con el
estándar ni con las bibliotecas de otros compiladores.
Calidad del diseño
Está demostrado que la mayor parte de la biblioteca estándar de C ha sido bien
diseñada, aunque, se ha comprobado que algunas partes también son fuente
de errores; funciones para entrada de cadenas como gets() o scanf(),
producen desbordamientos de buffer, y muchas guías de programación
recomiendan evitar su uso. La función strtok() presenta otra singularidad, está
diseñada para ser utilizada como un analizador léxico rudimentario, pero
resulta difícil de utilizar además de ser muy frágil.
El estándar ANSI
La biblioteca estándar de ANSI C consta de 24 ficheros cabecera que pueden
ser incluidos en un proyecto de programación con una simple directiva. Cada
cabecera contiene la declaración de una o más funciones, tipos de
datos y macros.
En comparación con otros lenguajes de programación (como por ejemplo Java)
la biblioteca estándar es muy pequeña, está proporciona un conjunto básico de
funciones matemáticas, de tratamiento de cadenas, conversiones de tipo y
4
Biblioteca Estándar del C
2011
entrada/salida por consola o por ficheros. No se incluyen, ni un conjunto de
tipos de datos contenedores básicos (listas, pilas, colas, ...), ni herramientas
para crear una interfaz gráfica de usuario (GUI), ni operaciones para trabajar en
red, no otras funcionalidades que un lenguaje como Java incorpora de manera
estándar. La principal ventaja del reducido tamaño de la biblioteca estándar de
C es que construir un entorno de trabajo en ANSI C es muy fácil y, en
consecuencia, portar un programa en ANSI C de una plataforma a otra es
relativamente sencillo.
Se han desarrollado muchas otras bibliotecas para proporcionar una
funcionalidad equivalente a la de otros lenguajes de programación. Por
ejemplo, el proyecto de desarrollo del entorno de escritorio de GNOME creó las
bibliotecas GTK+ y GLib con funcionalidades para desarrollar y trabajar con
interfaces gráficas de usuario. La variedad de bibliotecas disponibles ha hecho
que, a lo largo de la historia, haya quedado demostrada la superioridad de
algunas de estas herramientas. El gran inconveniente es que a menudo no
funcionan especialmente bien en conjunto, normalmente son los propios
programadores familiarizados con las diferentes bibliotecas quienes consiguen
sacarles el máximo partido, aunque diferentes partes de ellas puedan estar
disponibles en cualquier plataforma.
La biblioteca estándar de C en C++
El lenguaje de programación C++ incluye la funcionalidad de la biblioteca
estándar ANSI C, pero hace algunas modificaciones como cambiar los
nombres de los ficheros de cabecera, de <xxx.h> a <cxxx> (aunque los
nombres en estilo C, aun siendo obsoletos, siguen estando disponibles), y
ubican todos los identificadores dentro del namespace std.
Archivos de cabeceras de la biblioteca ANSI C
<assert.h>
Contiene la macro assert (aserción), utilizada para detectar
errores lógicos y otros tipos de fallos en la depuración de un
programa.
<complex.h> Conjunto de funciones para manipular números
complejos (nuevo en C99).
5
Biblioteca Estándar del C
2011
<ctype.h>
Contiene funciones para clasificar caracteres según sus tipos o
para convertir entre mayúsculas y minúsculas
independientemente del conjunto de
caracteres (típicamenteASCII o alguna de sus extensiones).
<errno.h>
Para testar los códigos de error devueltos por las funciones de
biblioteca.
<fenv.h>
Para controlar entornos en coma flotante (nuevo en C99).
<float.h>
Contiene la definición de constantes que especifican ciertas
propiedades de la biblioteca de coma flotante, como la diferencia
mínima entre dos números en coma flotante (_EPSOLON), el
número máximo de dígitos de precisión (_DIG), o el rango de
valores que se pueden representar (_MIN, _MAX).
<inttypes.h>
Para operaciones de conversión con precisión entre tipos
enteros (nuevo en C99).
<iso646.h>
Para utilizar los conjuntos de caracteres ISO 646 (nuevo en
NA1).
<limits.h>
Contiene la definición de constantes que especifican ciertas
propiedades de los tipos enteros, como rango de valores que se
pueden representar (_MIN, _MAX).
<locale.h>
Para la función setlocale() y las constantes relacionadas. Se
utiliza para seleccionar el entorno local apropiado (configuración
regional).
<math.h>
Contiene las funciones matemáticas comunes.
<setjmp.h>
Declara las macros setjmp y longjmp para proporcionar saltos de
flujo de control de programa no locales.
<signal.h>
Para controlar algunas situaciones excepcionales como la
división por cero.
<stdarg.h>
posibilita el acceso a una cantidad variable de argumentos
6
Biblioteca Estándar del C
2011
pasados a una función.
<stdbool.h>
Para el tipo booleano (nuevo en C99).
<stdint.h>
Para definir varios tipos enteros (nuevo en C99).
<stddef.h>
Para definir varios tipos de macros de utilidad.
<stdio.h>
Proporciona el núcleo de las capacidades de entrada/salida del
lenguaje C (incluye la venerable función printf).
<stdlib.h>
Para realizar ciertas operaciones como conversión de tipos,
generación de números pseudo-aleatorios, gestión de memoria
dinámica, control de procesos, funciones de entorno, de
señalización (??), de ordenación y búsqueda.
<string.h>
Para manipulación de cadenas de caracteres.
<tgmath.h>
Contiene funcionalidades matemáticas de tipo genérico (typegeneric) (nuevo en C99).
<time.h>
Para tratamiento y conversión entre formatos de fecha y hora.
<wchar.h>
Para manipular flujos de datos anchos y varias clases de
cadenas de caracteres anchos (2 o más bytes por carácter),
necesario para soportar caracteres de diferentes idiomas (nuevo
en NA1).
<wctype.h>
Para clasificar caracteres anchos (nuevo en NA1).
Ahora profundizaremos en las siguientes librerías:
7
Biblioteca Estándar del C
2011
La librería stdio.h
La biblioteca <stdio.h>, cuyas siglas significan “standard input-output header”
(cabecera standar de entrada y salida), es la biblioteca estándar del lenguaje
de programación C, el archivo de cabecera que contiene las definiciones
de macros, las constantes, las declaraciones de funciones y la definición
de tipos usados por varias operaciones estándar de entrada y salida. Por
motivos de compatibilidad, el lenguaje de programación C++ (derivado de C)
también tiene su propia implementación de estas funciones, que son
declaradas con el archivo de cabecera cstdio.
Las funciones declaradas en stdio.h son sumamente populares. Los
programadores tienen que incluir el archivo de cabecera stdio.h dentro del
código fuente para poder utilizar las funciones que están declaradas. Aparte de
las funciones también encontramos variables y tipos de dato propios de la
biblioteca que se pasaran a definir a continuación:
Funciones en la <stdio.h>
Las funciones declaradas en stdio.h pueden clasificarse en dos categorías:
funciones de manipulación de ficheros y funciones de manipulación de
entradas y salidas.
Las funciones de manipulación de puntero que encontramos en la stdio.h
son:
Nombre
fclose
Descripción
cierra un fichero a través de su puntero
fopen,
freopen,
abre un fichero para lectura, para escritura/reescritura o para adición
fdopen
remove
elimina un fichero
rename
cambia al fichero de nombre
8
Biblioteca Estándar del C
2011
rewind
La función rewind coloca el indicador de posición de fichero para el stream
apuntado por stream al comienzo del fichero.
tmpfile
crea y abre un fichero temporal que es borrado cuando cerramos con la
función fclose()
Las funciones de manipulación de datos de entrada y salida que
encontramos en esta biblioteca son cerca de 44 funciones representadas en la
siguiente tabla:
clearerr
fflush
fopen
fputs
fseek
getc
printf
remove
setbuf
tmpfile
vprintf
fclose
fgetc
formato
fread
fsetpos
getchar
putc
rename
setvbuf
tmpnam
vsprintf
feof
fgetpos
fprintf
freopen
ftell
gets
putchar
rewind
sprintf
ungetc
ferror
fgets
fputc
fscanf
fwrite
perror
puts
scanf
sscanf
vfprintf
Dentro de estas funciones se destacan las funciones: getchar, putc, putchar,
getc, gets, puts, fflush, scanf, printf, debido a que están se usan con mayor
frecuencia en los programas en C.

getchar ( ): esta función se utiliza para leer solo un carácter introducido
por un dispositivo de entrada.
o Formato: Variable de carácter = getchar ( );
getc( ): devuelve un carácter desde un fichero.
putchar( ): esta función se utiliza para visualizar un carácter al
dispositivo de salida.
o Formato: putchar(variable de carácter);
putc( ) : devuelve un carácter de un fichero.
scanf( ): se utiliza para introducir cualquier combinación de datos
procedentes del dispositivo (valores numéricos, cadenas de caracteres o
caracteres sueltos).
o Formato: scanf(cadena de control, arg1, arg2, … , arg n )
printf( ): se utiliza para visualizar cualquier combinación de datos
(valores numéricos, cadenas de caracteres o caracteres sueltos).
o Formato: printf(cadena de control, arg1,arg2,…, arg n);





9
Biblioteca Estándar del C

2011
gets( ): facilitan la transferencia de cadenas de caracteres, esta función
se utiliza para introducir una cadena de caracteres.
o Formato: gets(cadena de caracteres);
puts( ): facilitan la transferencia de cadenas de caracteres, esta función
se utiliza para mostrar una cadena de caracteres.
o Formato: puts(cadena de caracteres);
fflush( ): Sirve para vaciar el buffer de escritura del archivo especificado.


Constantes predeterminadas en la <stdio.h>
Las constantes definidas en el fichero cabecera stdio.h son:
Nombre
Descripción
EOF
entero negativo (int) usado para indicar "fin de fichero"
BUFSIZ
entero que indica el tamaño del buffer utilizado por la
función setbuf()
FILENAME_MAX tamaño máximo de la cadena de caracteres que contienen
el nombre de un fichero para ser abierto
FOPEN_MAX
Número máximo de ficheros que pueden estar abiertos
simultáneamente
_IOFBF
abreviatura de input/output fully buffered (buffer
entrada/salida totalmente lleno); es un entero que se puede
pasar como parámetro de la función setvbuf() para
requerirbloqueo del buffer en la entrada y salida
del stream abierto
_IOLBF
abreviatura de input/output line buffered (...??); es un
entero que se puede pasar como parametro a la
función setvbuf() para requerir line buffered (??) en la
entrada y salida del stream abierto
_IONBF
abreviatura de "input/output not buffered" (entrada/salida
sin buffer); es un entero que se puede pasar como
parametro a la función setvbuf() para requerir que la
entrada salida del stream abierto funcione sin buffer
10
Biblioteca Estándar del C
2011
L_tmpnam
tamaño de la cadena de caractres con la longitud suficiente
para almacenar un nombre de fichero temporal generado
por la función tmpnam()
NULL
macro que representa la constante puntero nulo; representa
un valor de puntero que no apunta a ninguna dirección
válida de objeto alguno en memoria
SEEK_CUR
entero que se puede pasar como parámetro a la
función fseek() para indicar posicionamiento relativo a la
posición actual del fichero
SEEK_END
entero que se puede pasar como parámetro a la
función fseek() para indicar posicionamiento relativo al final
del fichero
SEEK_SET
entero que se puede pasar como parámetro a la
función fseek() para indicar posicionamiento relativo al
inicio del fichero
TMP_MAX
el número máximo de nombres de ficheros únicos
generables por la función tmpnam()
Variables que podemos encontrar en la <stdio.h>
El fichero de cabecera stdio.h define las siguientes variables:
Nombre
Descripción
stdin
puntero a FILE que referencia la entrada estándar, normalmente el
teclado
stdout
puntero a FILE que referencia la salida estándar, normalmente el
monitor
stderr
puntero a FILE que referencia la salida de error estándar,
normalmente el monitor
11
Biblioteca Estándar del C
2011
Tipos de datos
Los tipos de datos definidos en el fichero de cabecera stdio.h son:

FILE - estructura que contiene información sobre el fichero o stream (flujo)
de texto necesario para realizar las operaciones de entrada/salida sobre él.
incluye:

posición actual de stream

indicador de fin de fichero (EOF)

indicador de error

puntero al buffer del stream

fpos_t - tipo no-array capaz de identificar unívocamente la posición de
cada byte en un archivo

size_t - tipo entero sin signo (positivo); es el tipo devuelto por el
operador sizeof
Ejemplos
 Ejemplo No.1:
#include <stdio.h>
main()
{
int a, b;
printf( "Introduzca el primer número: " );
scanf( "%d", &a );
printf( "Introduzca el segundo numero: " );
scanf( "%d", &b );
printf( "Los valores son: %d, %d ", a, b );
}
Introduzca el primer número: 76
Introduzca el segundo numero: 45
Los valores son: 76, 45
12
Biblioteca Estándar del C
2011
 Ejemplo No. 2:
#include <stdio.h>
main()
{
char a, b, c;
printf( "Introduzca primer caracter: " );
scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
fflush( stdin );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
fflush( stdin );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );
}
La primera vez que se ejecuta scanf, el buffer del teclado está vacío, por tanto, no es
preciso utilizar fflush, pero sí, en los dos casos posteriores. Obsérvese que,
a fflush hay que indicarle el buffer a limpiar, Standar Input (stdin) en este caso.
13
Biblioteca Estándar del C
2011
La librería Conio.h
Contiene los prototipos de las funciones, macros, y constantes para preparar y
manipular la consola en modo texto en el entorno de MS-DOS®.
Funciones más importantes de la <conio.h>
gotoxy (columna, fila)
Sitúa el cursor en la columna y fila especificada. Por ejemplo, esta instrucción:
gotoxy (5, 2);
…sitúa el cursor en la fila 2, columna 5 de la pantalla. La siguiente instrucción
de escritura en consola comenzará a escribir a partir de esas coordenadas.
cprintf() y cscanf()
Son las equivalentes a printf() y scanf(). Su sintaxis es la misma, y es
recomendable usarlas en lugar de las funciones estándar para evitar
funcionamientos extraños.
textcolor(color)
Cambia el color del texto. Los colores predefinidos son: BLACK, BLUE, RED,
GREEN, CYAN, MAGENTA, BROWN, DARKGRAY. Además, existen las
variedades “claras” de estos colores: LIGHTBLUE, LIGHTRED, LIGHTGREEN,
etc.
Así, si ejecutamos:
textcolor (LIGHTRED);
…el texto que se escriba a continuación aparecerá el color rojo intenso.
textbackground (color)
Establece el color del fondo del texto. Los colores predefinidos son los mismos
que para textcolor(). Así, este código:
textbackground (BLUE);
…hace que el texto que se escriba a continuación aparezca con el fondo en
color azul oscuro.
cgets
Esta función leerá una cadena de caracteres desde la consola, guardando la
cadena (y su longitud) en el lugar apuntado por *cadena. La función cgets leerá
caracteres hasta que encuentre una combinación de retorno de línea y nueva
línea (CR/LF), o hasta que el número máximo de caracteres permitidos hayan
14
Biblioteca Estándar del C
2011
sido leídos. Si se lee una combinación CR/LF, entonces es sustituido por un
carácter nulo '\0' antes de ser guardado la cadena.
Cputs
Muestra la cadena, que finaliza con el carácter nulo, apuntada por el argumento
cadena en la ventana de texto actual. Esta función es similar a la función puts,
pero con dos excepciones: la función cputs no convertirá los caracteres de
nueva línea (\n) en la pareja de caracteres de retorno de línea/nueva línea (\r\n)
tampoco añadirá el carácter de nueva línea al final del texto.
Kbhit
Revisa si una tecla pulsada está disponible. Cualesquier pulsadas disponibles
pueden ser recogidas con las funciones getch o getche.
getch ()
Lee un carácter desde el teclado, sin mostrar el eco y sin necesidad de pulsar
Return. Devuelve el código ASCII del carácter tecleado. Ahí va un ejemplo:
char c;
c = getch();
clrscr ()
Borra la pantalla. No necesita argumentos.
15
Biblioteca Estándar del C
2011
La librería Ctype.h
Este archivo de cabecera analiza el tipo de carácter dependiendo de la función
mandada a llamar. El carácter puede ser mandado a la función como un
número entero o como un carácter (variable o encerrado entre apóstrofos). Si la
función determina que no es ese tipo de carácter regresa el valor de 0 (que
para c es un valor de falso y otro valor si lo es (para C es un valor de
verdadero). Existen también un par de funciones que permiten convertir un
carácter de minúscula a mayúscula y viceversa,
Funciones dentro de <Ctype.h>
 Isalnum: determina si el character c es una letra del alfabeto (de la a a
la z sin distinguir entre mayúsculas y minúsculas) o un digito. Si no es
letra o digito regresa un valor cero, de lo contrario regresa un valor
distinto de cero.
o Formato: Int isalnum (int c)
Programa
void main (void)
{ char letra;
letra=getche();
if (isalnum(letra))
printf("\n%c es una
letra o número", letra);
else
printf("\n%c no es
una letra ni número", letra);
}
Salida
Si letra='r'
"r es una letra o número"
Si letra='7'
"7 es una letra o número"
Si letra='$'
"$ no es una letra ni número"
16
Biblioteca Estándar del C
2011
 Isdigit: determina si el carácter c es un número. Si no es un número
regresa un valor cero, de lo contrario regresa un valor distinto de cero.
o Fomarto: int isdigit (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
if (isdigit(letra))
printf("\n%c es un
número", letra);
else
printf("\n%c no es
un número", letra);
}
Salida
Si letra='4'
"4 es un número"
Si letra='$'
"$ no es un número"
 Isascii: determina si el entero c es un carácter de la tabla de código
ASCII básico (del 0 al 127). Si no es un carácter ASCII básico regresa
un valor cero, de lo contrario regresa un valor distinto de cero.
o Formato: int isascii (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
if (isascii(letra))
printf("\n%c es
ASCII básico", letra);
else
printf("\n%c no es
un ASCII básico", letra);
}
17
Salida
Si letra='+'
"+ es un ASCII básico"
Si letra='ñ'
"ñ no es un ASCII básico"
Biblioteca Estándar del C
2011
 Isspace: determina si el caracter c es un caracter blanco (tab, espacio,
retorno de carro, cambio de línea, tab vertical, salto de página). Si no es
caracter blanco regresa un valor cero, de lo contrario regresa un valor
distinto de cero.
o Formato: int isspace (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
if (isspace(letra))
printf("\n%02x es
un caracter blanco", letra);
else
printf("\n%c no es
un caracter blanco", letra);
}
Salida
Si letra='\t'
"0x09 es un caracter blanco"
Si letra='$'
"$ no es un caracter blanco"
 islower : determina si el caracter c es una letra minúscula. Si no es
minúscula regresa un valor cero, de lo contrario regresa un valor distinto
de cero.
o Formato: int islower (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
if (islower(letra))
printf("\n%c es una
letra minúscula", letra);
else
printf("\n%c no es
una letra minúscula", letra);
}
Salida
Si letra='r'
"r es una letra minúscula"
Si letra='R'
"R no es una letra minúscula"
Si letra='&'
"& no es una letra minúscula"
 Isupper: Determina si el caracter c es una letra mayúscula. Si no es
mayúscula regresa un valor cero, de lo contrario regresa un valor distinto
de cero.
o Formato: int isupper (int c)
18
Biblioteca Estándar del C
2011
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
if (isupper(letra))
printf("\n%c es una
letra mayúscula", letra);
else
printf("\n%c no es
una letra mayúscula", letra);
}
Salida
Si letra='R'
"R es una letra mayúscula"
Si letra='r'
"r no es una letra mayúscula"
Si letra='&'
"& no es una letra mayúscula"
 Toascii: convierte un entero a un carácter ASCII básico (solo mantiene
los 7 bits menos significativos).
o Formato: int toascii (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
printf("\n%c sin convertir",
letra);
printf("\n%c convertido a
ASCII", toascii(letra));
}
Salida
Si letra='r'
"r sin convertir"
"r convertido a ASCII"
Si letra='ú'
"ú sin convertir"
"# convertido a ASCII"
 tolower : Convierte una letra mayúscula a minúscula. Si es una letra
mayúscula retornara su equivalente en minúscula, de lo contrario
retornará el carácter sin modificación alguna.
o Formato: int tolower (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
printf("\n%c sin convertir",
letra);
printf("\n%c en minúscula",
tolower(letra));
}
19
Salida
Si letra='A'
"A sin convertir"
"a en minúscula"
Si letra='5'
"5 sin convertir"
"5 en minúscula"
Biblioteca Estándar del C
2011
 toupper: Convierte una letra minúscula a mayúscula. Si es una letra
minúscula retornara su equivalente en mayúscula, de lo contrario
retornará el carácter sin modificación alguna.
o Formato: int toupper (int c)
Ejemplo:
Programa
void main (void)
{ char letra;
letra=getche();
printf("\n%c sin convertir",
letra);
printf("\n%c en mayúscula",
toupper(letra));
}
20
Salida
Si letra='a'
"a sin convertir"
"A en mayúscula"
Si letra='5'
"5 sin convertir"
"5 en mayúscula"
2011
Biblioteca Estándar del C
La librería Stdlib.h
stdlib.h , cuyas siglas se definien como: std-lib: standar library o
estándar, es el archivo de cabecera de la biblioteca estándar de
general del lenguaje de programación C. Contiene los prototipos de
de C para gestión de memoria dinámica, control de procesos y
compatible con C++ donde se conoce como cstdlib.
biblioteca
propósito
funciones
otras. Es
Las funciones que pertenencen a stdlib.h pueden clasificarse en las siguientes
categorías: conversión, memoria, control de procesos, ordenación y búsqueda,
matemáticas.
Nombre
Descripción
Conversión de tipos
atof (ascii to float)
cadena de caracteres a coma flotante
atoi (ascii to integer)
cadena de caracteres a entero
atol (C Standard
Library) (ascii to long)
cadena de caracteres a entero tamaño largo
strtod (string to double)
cadena de caracteres a coma flotante tamaño
doble
strtol (string to long)
cadena de caracteres a entero largo
strtoul (string to unsigned
long)
cadena de caracteres a entero largo sin signo
(positivo)
Generación de números pseudo-aleatorios
rand
Genera un número pseudo-aleatorio
srand
Establece la semilla para el generador de
números pseudo-aleatorios
21
Biblioteca Estándar del C
2011
Gestión de memoria dinámica
malloc, calloc, realloc
Reservan memoria dinámica
del heap (montón o montículo)
free
Liberan memoria devolviéndola al heap
Control de procesos
abort
terminar ejecución anormalmente
atexit
registrar una función callback para la salida
del programa
exit
terminar ejecución del programa
getenv
recuperar una variable de entorno
system
ejecutar un comando externo
Ordenación y búsqueda
bsearch
búsqueda binaria en un array
qsort
ordena un vector
(informática) usando Quicksort
Matemáticas
abs, labs
valor absoluto
div, ldiv
división entera o euclidiana
Ahora pasaremos a definir algunas de las funciones que se utilizan
mas de esta librería que son:
22
Biblioteca Estándar del C
2011
 Atoi: Convierte una cadena a un entero
Formato: int atoi ( const char * str );
Analiza la cadena str C interpretación de su contenido como un número entero,
que se devuelve como un valor int.
Los descartes primera función como muchos espacios en blanco como sea
necesario hasta que el primer carácter no blanco se encuentra. Luego, a partir
de este personaje, toma un opcional signo inicial más o menos seguido de
tantos caracteres numéricos como sea posible, y las interpreta como un valor
numérico.
La cadena puede contener caracteres adicionales después de los que forman
el número entero, que se ignoran y no tienen ningún efecto sobre el
comportamiento de esta función.
Si la primera secuencia de caracteres no está en blanco str no es un número
entero válido, o si no existe tal secuencia, ya sea porque str está vacío o sólo
contiene espacios en blanco, sin conversión se realiza.
 Atof : convierte una cadena a doble
Formato: double atof ( const char * str );
Analiza la cadena str C interpretación de su contenido como un número de
punto flotante y devuelve su valor como un doble.
Los descartes primera función como muchos espacios en blanco como sea
necesario hasta que el primer carácter no blanco se encuentra. Luego, a partir
de este personaje, toma como muchos personajes de lo posible que son
válidos después de una sintaxis parecida a la de los literales de coma flotante,
y las interpreta como un valor numérico. El resto de la cadena después de que
el último carácter válido es ignorado y no tiene ningún efecto sobre el
comportamiento de esta función.
Un número válido de punto flotante para atof está formado por una sucesión
de:
Un signo opcional más o menos
Una secuencia de dígitos, de forma opcional que contiene un carácter de punto
decimal
Una parte exponente opcional, que a su vez consiste en una 'e ' o 'E'
caracteres seguido de un signo opcional y una secuencia de dígitos.
Si la primera secuencia de caracteres no está en blanco str no forman un
número válido de punto flotante como acaba de definir, o si no existe tal
secuencia, ya sea porque str está vacío o sólo contiene espacios en blanco, sin
conversión se realiza.
23
Biblioteca Estándar del C
2011
 Rand: Devuelve un número entero pseudo-aleatorio en el rango de 0 a
RAND_MAX.
Formato: int rand ( void );
Este número es generado por un algoritmo que devuelve una secuencia de
números aparentemente no relacionados cada vez que se llama. Este algoritmo
utiliza una semilla para generar la serie, que debería ser inicializado a un valor
distintivo con srand.
RAND_MAX es una constante definida en <cstdlib>. Su valor por defecto
puede variar entre las implementaciones pero se concede al menos 32.767.
Una forma típica de generar números pseudo-aleatorios en un rango
determinado utilizando rand es utilizar el módulo del valor devuelto por el lapso
de gama y añade el valor inicial de la gama:
(% valor de 100) se encuentra en el rango de 0 a 99
(valor 100% + 1) se encuentra en el rango de 1 a 100
(valor 30% + 1985) está en el rango 1985 a 2014
 Srand: inicializa el generador de números aleatorios
Formato: void srand (unsigned int semilla);
El generador de números pseudo-aleatorios se inicializa con el argumento
pasado como semilla.
Para cada valor de inicialización diferentes utilizados en una llamada a srand,
el generador de números pseudo-aleatorios se puede esperar para generar una
sucesión de diferentes resultados en las posteriores convocatorias de rand.
Dos inicializaciones diferentes con la misma semilla, la instrucción de
generador de pseudo-aleatorios para generar la misma sucesión de los
resultados de las posteriores convocatorias de rands en ambos casos.
Si la semilla se establece en 1, el generador se reinicializa a su valor inicial y
produce los mismos valores que antes de cualquier llamada a srand o rands.
Con el fin de generar números al azar-como, srand es normalmente inicializado
a un valor distintivo, como los relacionados con el tiempo de ejecución. Por
ejemplo, el valor devuelto por la función de tiempo (declarada en <ctime>
encabezado) es diferente a cada segundo, que es distintivo suficiente para la
mayoría de las necesidades del azar.
 System: ejecuta un comando del sistema
Formato: int system (const char * command);
24
Biblioteca Estándar del C
2011
Inicia el procesador de comandos para ejecutar un comando. Una vez que la
ejecución de comandos ha terminado, el procesador da el control al programa,
devolver un valor entero, cuya interpretación depende del sistema.
La función de llamada también se puede utilizar con NULL como argumento
para comprobar si existe un procesador de comandos.
25
Biblioteca Estándar del C
2011
La librería String.h
string.h es un archivo de la Biblioteca estándar del lenguaje de programación
C que contiene la definición de macros, constantes, funciones y tipos de
utilidad para trabajar con cadenas de caracteres y algunas operaciones de
manipulación de memoria (el nombre string puede ser algo inapropiado).
Las funciones declaradas en string.h se han hecho muy populares, por lo que
están garantizadas para cualquier plataforma que soporte C. Sin embargo,
existen algunos problemas de seguridad con estas funciones, como
el desbordamiento de buffer (buffer overflow), que hacen que algunos
programadores prefieran opciones más seguras frente a la portabilidad que
estas funciones ofrecen. Además, las funciones para cadenas de caracteres
sólo trabajan con conjuntos de caracteres ASCII o extensiones ASCII
compatibles.
Funciones dentro de <string.h>
Dentro de las funciones que nos ofrece la biblioteca encontramos las
siguientes:
Nombres
memcpy
Descripción
copia n bytes entre dos áreas de memoria que no deben
solaparse
memmove copia n bytes entre dos áreas de memoria; al contrario
que memcpy las áreas deben solaparse
memchr
busca un valor a partir de una dirección de memoria dada y
devuelve un puntero a la primera ocurrencia del valor buscado
o NULL si no se encuentra
memcmp
compara los n primeros caracteres de dos áreas de memoria
memset
sobre escribe un área de memoria con un patrón de bytes dado
strcat
añade una cadena al final de otra
strncat
añade los n primeros caracteres de una cadena al final de otra
26
Biblioteca Estándar del C
2011
strchr
localiza un carácter en una cadena, buscando desde el principio
strrchr
localiza un carácter en una cadena, buscando desde el final
strcmp
compara dos cadenas numéricamente ('a'!='A')
strncmp
compara los n primeros caracteres de dos cadenas
numéricamente ('a'!='A')
strcoll
compara dos cadenas según la colación actual ('a'=='A')
strcpy
copia una cadena en otra
strncpy
copia los n primeros caracteres de una cadena en otra
strerror
devuelve la cadena con el mensaje de error correspondiente al
número de error dado
strlen
devuelve la longitud de una cadena
strspn
devuelve la posición del primer carácter de una cadena que no
coincide con ninguno de los caracteres de otra cadena dada
strcspn
devuelve la posición del primer carácter que coincide con alguno
de los caracteres de otra cadena dada
strpbrk
encuentra la primera ocurrencia de alguno de los caracteres de
una cadena dada en otra
strstr
busca una cadena dentro de otra
strtok
parte una cadena en una secuencia de tokens
strxfrm
transforma una cadena en su forma de colación (??)
strrev
invierte una cadena
27
Biblioteca Estándar del C
2011
Entre todas estas funciones que nos ofrece la string.h podemos considerar las
siguientes como las de uso frecuente, en cuanto a esta biblioteca se refiere:
Nombre
Formato
Descripción
Valor retornado
# include <string.h> El strcpy () copia la
cadena apuntada por
char * strcpy (char s2 (incluyendo el byte
* s1, const char *
nulo de terminación)
s2);
en el array apuntado
por s1. Si la copia se
realiza
entre
los
objetos
que
se
superponen,
el
comportamiento
es
indefinido.
El
strcpy
()
devuelve s1, sin
valor de retorno se
reserva
para
indicar un error.
strlen( )
# include <string.h> La función strlen ()
calcula el número de
size_t strlen (const bytes de la cadena a la
char * s);
que s puntos, sin
incluir el byte nulo de
terminación.
La función strlen ()
devuelve la
longitud de s, sin
valor de retorno se
reserva para
indicar un error.
strncmp( )
# include <string.h> El strncmp () compara
no más de n bytes
int strncmp (const
(bytes que siguen un
char * s1, const
byte nulo no se
char * s2, size_t n); comparan) del array
apuntado por s1 con la
cadena apuntada por
s2.
El signo de un valor de
retorno distinto de cero
se determina por el
signo de la diferencia
entre los valores de la
primera
pareja
de
bytes
(ambos
interpretados como el
tipo unsigned char)
que difieren en las
cadenas
que
se
comparan.
Si es correcto,
strncmp ()
devuelve un
número entero
mayor, igual o
inferior a 0, si la
matriz
posiblemente
terminada en nulo
apuntado por s1
es mayor, igual o
inferior a la matriz
posiblemente
terminada en nulo
apuntada por s2 ,
respectivamente.
strcpy( )
28
Biblioteca Estándar del C
strncpy( )
29
El strncpy () copia no
más de n bytes (bytes
que siguen un byte
nulo no se copian) de
la cadena apuntada
por s2 a la cadena
apuntada por s1. Si la
# include <string.h> copia se realiza entre
los objetos que se
char * strncpy (char superponen,
el
* s1, const char *
comportamiento
es
s2, size_t n);
indefinido.
Si el array apuntado
por s2 es una cadena
que es menor que n
bytes, bytes nulos se
añaden a la copia en el
array apuntado por s1,
hasta que n bytes en
todos se escriben.
2011
El strncpy ()
devuelve s1, sin
valor de retorno se
reserva para
indicar un error.
Biblioteca Estándar del C
2011
La librería Time.h
La biblioteca time.h es un archivo de cabecera de la biblioteca
estándar del lenguaje de programación C que contiene funciones para
manipular y formatear la fecha y hora del sistema.
Función
asctime()
Uso
Obtener una cadena alfanumérica del tipo Mon Nov 21 11:31:54
1993\n\0 a partir de una estructura tm
clock()
Obtener el tiempo transcurrido desde el comienzo de la
ejecución del programa
ctime()
Obtener una cadena alfanumérica del tipo señalado
para asctime a partir de un timestamp.
difftime()
Obtener el tiempo en segundos entre dos timestamp.
gmtime()
Obtener una fecha GMT en formato tm a partir de un
timestamp con la hora local.
localtime() Obtener una fecha en formato tm a partir de un timestamp.
mktime()
Obtener un timestamp numérico a partir de una fecha tm.
strftime()
Obtener una representación alfanumérica a partir de una
fecha tm (acepta un formateo similar a printf)
time()
Obtener un timestamp con la fecha y hora del Sistema.
Además de las funciones anteriores, la STL define tres tipos
simples: size_t; clock_t, time_t y una estructura tm. En realidad se trata de
typedefs dependientes de la implementación.
typedef long time_t;
size_t
clock_t
time_t
tm
30
El tipo size_t es utilizado en muchas ocasiones. Por ejemplo, es el
resultado devuelto por el operador sizeof . Es un entero sin signo
cuyo tipo exacto depende de la implementación, aunque suele ser
de al menos 32 bits (4 Bytes). Normalmente está definido en
diversos ficheros de cabecera, entre otros <ctime>, aunque es
frecuente que de una cabecera se redireccione a otra donde
realmente está definido. En el caso de MS Visual C++ 6.0 y Borland
C++size_t es un tipo unsigned int
Representa el valor devuelto por la función clock. En Borland C++
es un long int
Representa valores devueltos por las funciones time() y mktime().
En MS Visual C++ y Borland C++ es un long int
Es una estructura utilizada por diversas funciones de la Librería
para almacenar información relativa a fecha y hora. Por
ejemplo: asctime y localtime. Responde a la definición siguiente:
struct tm {
int tm_sec; // Segundos pasados del minuto (0-61)
int tm_min; // Minutos pasados de la hora (0-59)
int tm_hour; // Horas desde medianoche (0-23)
int tm_mday; // Dia del mes (1-31)
Biblioteca Estándar del C
2011
int tm_mon; // Número del mes (0-11)
int tm_year; // Años transcurridos desde 1900
int tm_wday; // Dia de semana (0-6; Domingo = 0)
int tm_yday; // Dia del año (0-365)
int tm_isdst; /* Adelanto de hora para horario de verano
1=Si; 0=No; -1=Indefinido */
};
Definición de las funciones de time.h
 Asctime( )
La función se presenta en dos versiones: asctime para caracteres normales
y _wasctime para caracteres anchos, que responden a los siguientes
prototipos:
#include <time.h>
char* asctime(const struct tm* tmPtr);
wchar_t* _wasctime(const struct tm* tmPtr);
Descripción:
Ambas funciones aceptan un puntero a una estructura tipo tm , y devuelven un
puntero a una cadena de caracteres con información alfanumérica sobre la
fecha contenida en la estructura. La cadena es de ancho fijo (26 caracteres),
mantiene siempre el mismo formato, y es reescrita cada vez que se invoca la
función:
Mon Nov 21 11:31:54 1993\n\0
El reloj utilizado es de 24 horas, y cualquiera que sea el tipo de caracteres
utilizados (anchos o estrechos), termina en los caracteres NL (New Line) y NUL
(nulo).
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() {
31
// ==================
Biblioteca Estándar del C
2011
struct tm myt;
myt.tm_sec = 1; myt.tm_min = 30; myt.tm_hour = 9;
myt.tm_mday = 22; myt.tm_mon = 11; myt.tm_year = 56;
myt.tm_wday = 4; myt.tm_yday = 0; myt.tm_isdst = 0;
char* cTim = asctime(&myt));
cout << "Fecha resultante: " << cTim;
return 0;
}
Salida:
Fecha resultante: Thu Dec 22 09:30:01 1956
 Clock( )
Prototipo:
#include <time.h>
clock_t clock(void);
Descripción:
Esta función devuelve un valor de tipo clock_t que representa el tiempo desde
el comienzo del programa hasta el momento de invocación de la función.
Mediante invocaciones sucesivas puede ser utilizada para obtener el tiempo
entre dos puntos del programa. En caso de error, si el tiempo de proceso no
está disponible o no es representable, la función devuelve -1.
El valor devuelto representa el número de "tics" del RTC desde el inicio del
programa. Es posible calcular este valor en segundos dividiéndolo por una
constante denominadaCLK_TCK en unos sistemas y CLOCKS_PER_SEC en
otros. Definida en <ctime>.
En el fichero <time.h> del compilador Borland C++ 5.5 encontramos las
definiciones siguientes:
#define CLOCKS_PER_SEC 1000.0
#define CLK_TCK 1000.0
Ejemplo:
32
Biblioteca Estándar del C
2011
cout << "Desde el inicio: " << clock()/CLK_TCK << " segundos\n";
 Ctime( )
Esta función se presenta en dos versiones: ctime para caracteres normales
y _wctime para caracteres anchos. Prototipos:
#include <ctime>
char* ctime(const time_t* sTptr);
wchar_t* _wctime(const time_t* sTptr);
Descripción:
Ambas funciones aceptan un puntero a un valor time_t que supuestamente
contiene un timestamp expresado en segundos después del inicio de la época
UNIX (1 de Enero de 1970 00:00:00 GMT). Por ejemplo un valor devuelto por la
función time. Ambas funciones devuelven un puntero a una cadena de 26
caracteres que contiene la fecha y hora con un formato alfanumérico en el que
todos los campos tienen siempre el mismo ancho, y que es reescrita cada vez
que se invoca a la función (el reloj utilizado es de 24 horas):
Mon Nov 21 11:31:54 1993\n\0
Si la fecha corresponde a un momento anterior a Enero de 1970 se obtiene una
cadena nula.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() { // =================
time_t tSec = 31536000;
time_t* tPtr = &tSec;
char* sTptr = ctime(tPtr);
cout << "Fecha: " << sTptr ;
return 0;
}
Salida:
33
Biblioteca Estándar del C
2011
Fecha: Fri Jan 01 01:00:00 1971
 Difftime( )
Prototipo:
#include <time.h>
double difftime(time_t time2, time_t time1);
Descripción:
La función acepta dos valores tipo time_t y devuelve un double con el tiempo
entre ambos valores expresado en segundos.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() {
// =================
time_t first, second;
first = time(NULL);
delay(2000); // esperar 2 segundos
second = time(NULL);
cout << "Diferencia: " << difftime(second, first)) << " segundos\n";
return 0;
}
 Gmtime ( )
Prototipo:
#include <time.h>
struct tm* gmtime(const time_t* tPtr);
Descripción:
La función acepta un puntero a un tipo time_t, que suponemos contiene una
fecha local (por ejemplo, obtenida con la función time , y devuelve un puntero a
34
Biblioteca Estándar del C
2011
una estructura tipotm que contiene la fecha convertida a la hora GMT
correspondiente.
Esta función puede ser útil en un programa que maneje comunicaciones por
Internet, donde es costumbre utilizar la hora GMT en vez de la hora local.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() {
// =================
time_t tSac = time(NULL); // instante actual
struct tm* pt1 = localtime(&tSac);
cout << "hh:mm:ss " << pt1->tm_hour << ":" << pt1->tm_min << ":"
<< pt1->tm_sec << endl;
cout << "dd-mm-aaaa: " << pt1->tm_mday << "-" << pt1->tm_mon+1 << "-"
<< pt1->tm_year+1900 << endl;
tm tm2 = *gmtime(&tSac); // deferencia y asignación
cout << "hh:mm:ss " << tm2.tm_hour << ":" << tm2.tm_min << ":"
<< tm2.tm_sec << endl;
cout << "dd-mm-aaaa: " << tm2.tm_mday << "-" << tm2.tm_mon+1 << "-"
<< tm2.tm_year+1900 << endl;
return 0;
}
Salida:
hh:mm:ss 22:45:2
dd-mm-aaaa: 23-5-2003
hh:mm:ss 5:45:2
dd-mm-aaaa: 24-5-2003
Comentario:
Suponemos que el ordenador está situado en S. Francisco (USA), donde
utilizan el horario PDT. En Mayo ya rige el horario de verano que tiene un
35
Biblioteca Estándar del C
2011
retraso de 7 horas respecto a la hora Zulú. Cuando en S. Francisco son las
22:45 del día 23, en Greenwich son las 5:45 de la madrugada del día 24.
 Localtime( )
Esta función, junto con time, es posiblemente una de las más útiles de entre las
que se refieren a asuntos de fecha y hora.
Prototipo:
#include <time.h>
struct tm* localtime(const time_t* timer);
Descripción:
La función acepta un puntero a un tipo time_t, que contiene una fecha
expresada en segundos desde el inicio de la época UNIX, y devuelve un
puntero a una estructura tm cuyos miembros contienen información sobre la
fecha introducida. Sus miembros son sobreescritos con cada invocación a la
función.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() {
// =================
char* dS[7] = {"Domingo","Lunes","Martes","Miercoles",
"Jueves","Viernes","Sabado"};
time_t tSac = time(NULL);
// instante actual
struct tm* tmP = localtime(&tSac);
cout << "hh:mm:ss " << tmP->tm_hour << ":" << tmP->tm_min << ":"
<< tmP->tm_sec << endl;
cout << "dd-mm-aaaa: " << tmP->tm_mday << "-" << tmP->tm_mon+1 << "-"
<< tmP->tm_year+1900 << endl;
cout << "Dia de semana: " << dS[tmP->tm_wday] << endl;
cout << "Dia del año: " << tmP->tm_yday << endl;
cout << "Horario de verano: " << (tmP->tm_isdst ? "Si" : "No") << endl;
36
Biblioteca Estándar del C
2011
return 0;
}
Salida:
hh:mm:ss 11:13:23
dd-mm-aaaa: 22-5-2003
Dia de semana: Jueves
Dia del año: 141
Horario de verano: Si
 Mktime ( )
Prototipo:
#include <time.h>
time_t mktime(struct tm* tmPtr);
Descripción:
La función mktime realiza justamente la operación inversa que la
anterir localtime. Acepta un puntero a una estructura tm con información sobre
una fecha y devuelve un valor tipo time_t con el tiempo en segundos desde el
inicio de la época UNIX.
 Strftime( )
Esta función se presenta en dos versiones: strftime para caracteres normales
y wcsftime para caracteres anchos.
Prototipo:
#include <time.h>
size_t strftime(char* str, size_t maxsize,
const char* fmt, const struct tm* mPt);
size_t wcsftime(wchar_t* str, size_t maxsize,
const wchar_t* fmt, const struct tm* mPt);
Descripción:
37
Biblioteca Estándar del C
2011
Como puede verse, la función devuelve un tipo size_t, y acepta cuatro
argumentos: un puntero-a-carácter str que señala una cadena de caracteres
donde se obtendrá el resultado; un tipo size_t maxize; un puntero a cadena de
caracteres constante fmt y un puntero mPt a una estructura tm que suponemos
contiene datos de una fecha.
La función produce una cadena alfanumérica terminada en un carácter nulo, y
la sitúa en el lugar señalado por str. El valor devuelto es la longitud de esta
cadena incluyendo el carácter de terminación. En caso de error, o si la longitud
resulta mayor que maxsize, el valor devuelto es cero y el resultado obtenido
(cadena situada en str) es indeterminado.
La cadena producida es una versión de la fecha contenida en la estructura,
pero formateada según determinados códigos de formateo que se sitúan en la
cadena señalada por fmt. El sistema es similar al de la conocida función printf()
que proporciona salidas formateadas. Los códigos permitidos son muy
numerosos, de forma que puede controlarse todos los detalles de la
representación (consulte el manual de su compilador al respecto).
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() {
// =================
time_t tSac = time(NULL); // instante actual
tm tms = *localtime(&tSac);
cout << "hh:mm:ss " << tms.tm_hour << ":" << tms.tm_min << ":"
<< tms.tm_sec << endl;
cout << "dd-mm-aaaa: " << tms.tm_mday << "-" << tms.tm_mon+1 << "-"
<< tms.tm_year+1900 << endl;
char sRes[80];
size_t r = strftime(sRes, 80,
"Son %M minutos pasados de las %I horas (%Z) %A, %B %d 20%y",
&tms);
if (r) cout << sRes;
38
Biblioteca Estándar del C
2011
return 0;
}
Salida:
hh:mm:ss 20:14:13
dd-mm-aaaa: 24-5-2003
Son 14 minutos pasados de las 08 horas (WET) Saturday, May 24 2003
 Time( )
Esta función devuelve la hora actual del sistema en segundos desde el inicio de
la época UNIX (1 de Enero de 1970 00:00:00 GMT).
Prototipo:
#include <ctime>
time_t time(time_t* tPtr);
Descripción:
La función acepta un puntero a time_t y devuelve un valor time_t que es el
tiempo en segundos transcurrido desde el inicio de la época UNIX. En realidad
puede realizar dos funciones: si se pasa un valor no nulo, el valor
correspondiente se almacena en el sitio señalado por el puntero. Si este valor
es nulo entonces el valor no se almacena en ningún sitio. En cualquier caso
siempre devuelve un valor con el instante actual en segundos desde las 0
horas del 1 de Enero de 1970.
Ejemplo:
#include <iostream>
using namespace std;
#include <ctime>
int main() { // =================
time_t t1 = 0;
time_t* pt1 = &t1;
39
Biblioteca Estándar del C
time(pt1);
cout << "Desde la epoca UNIX " << *pt1 << " segundos\n";
time_t t2 = time(NULL);
cout << "Desde la epoca UNIX " << t2 << " segundos\n";
return 0;
}
Salida:
Desde la epoca UNIX 1053550492 segundos
Desde la epoca UNIX 1053550492 segundo
40
2011
Biblioteca Estándar del C
2011
La librería Math.h
Math.h es un archivo de cabecera de la biblioteca estándar del lenguaje de
programación C diseñado para operaciones matemáticas básicas. Muchas de
sus funciones incluyen el uso de números en coma flotante. C++ también
implementa estas funciones por razones de compatibilidad y las declara en la
cabecera cmath.
Funciones dentro de <math.h>
Nombre
Acos
Asin
Atan
Atan2
Descripción
Calcula el valor principal del arco
coseno de x. Puede producirse un
error de dominio para los argumentos
que no estén en el intervalo [-1, +1]
Calcula el valor principal del arco
seno de x. Puede producirse un error
de dominio para los argumentos que
no estén en el intervalo [-1, +1].
Calcula el valor principal del arco
tangente de x.
Calcula el valor principal del arco
tangente de y/x, usando los signos de
ambos argumentos para determinar el
cuadrante del valor de retorno. Puede
producirse un error de dominio si
ambos argumentos son cero.
Ceil
Calcula el valor integral más pequeño
que no sea menor de x.
Cos
Calcula el coseno de x (medido en
radianes).
Exp
Calcula la función exponencial de x.
Fabs
Calcula el valor absoluto del número
de coma flotante, x.
Floor
Calcula el valor integral más grande
que no sea mayor de x.
Fmod
Calcula el resto de coma flotante de la
división de x/y.
Log
Calcula el logaritmo natural (o
neperiano). Puede producirse un error
de dominio si el argumento es
41
Biblioteca Estándar del C
2011
negativo. Puede producirse un error
de recorrido si el argumento es cero.
Pow
Sin
Calcula x elevado a la potencia de y.
Puede producirse un error de dominio
si x es negativo e y no es un valor
entero. También se produce un error
de dominio si el resultado no se
puede representar cuando x es cero e
y es menor o igual que cero. Un error
de recorrido puede producirse.
Calcula el seno de x (medido en
radianes).
Sqrt
Calcula la raíz cuadrada del valor no
negativo de x. Puede producirse un
error de dominio si x es negativo.
Tan
Calcula la tangente de x (medido en
radianes).
Abs
Calcula el valor absoluto.
42
Biblioteca Estándar del C
2011
Programa Ejemplo
El siguiente programa fue un programa hecho por el grupo en el cual se
muestran muchas de las funciones explicadas anteriormente que encontramos
en la Biblioteca Estándar del C.
 Programa Fuente:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<ctype.h>
#include <time.h>
#define pi 3.1416
main()
{ float r,a,v;
int opcion,x=0;
char resp='s',n[15];
clock_t comienzo;
do
{comienzo=clock();
printf("Introduzca su nombre ");
scanf("%[^\n]",&n);
printf("\nIntroduzca el radio de su esfera: ");
scanf("%f",&r);
printf("1) Area\n2) Volumen\n");
printf("Digite la opcion de la operacion a realizar ");
scanf("%i",&opcion);
switch(opcion)
{ case 1: a=4*pi*r*r;
printf("\n");
43
Biblioteca Estándar del C
2011
puts(n);
printf("\nEl area de la esfera es de: %.2f",a);
break;
case 2: v=(4/3)*pi*(pow(r,3));
printf("\n");
puts(n);
printf("\nEl volumen de la esfera es de: %.3f",v);
break;
default:printf("\nIntrodujo un valor no valido para la opción de la operación");
}
printf("\nDesea hacer la operación otra vez s/n: ");
fflush(stdin);
scanf("%c",&resp);
if(isupper(resp))
resp='s';
fflush(stdin);
}
while(resp=='s');
printf("\nEl proceso tuvo un tiempo de duración de: %.1f segundos",(clock()comienzo)/(double)CLOCKS_PER_SEC);
getch();
return 0;
}
44
Biblioteca Estándar del C
 Capturas de pantalla:
45
2011
Biblioteca Estándar del C
2011
Conclusiones
El lenguaje de programación C posee diversas librerías dentro de la
Librería Estándar del C, las cuales nos ayudan a realizar funciones para así no
tendríamos que programarlas desde cero.
Entre las bibliotecas encontramos:




Stdio.h: la cual nos ayuda con los datos de E/S
Math.h: la cual nos ayuda con funciones matemáticas (sen, cos,…)
Conio.h: la cual nos ayuda a modificar la pantalla de MS-DOS
Time.h: la cual nos ayuda con todo tipo de funciones referentes al
tiempo.
 Ctype.h: que nos ayuda con operaciones básicas de caracteres.
 Stilib.h: que nos ayuda con métodos dinámicos entre otros.
 String.h: que nos ayuda a manipular cadenas.
Al final podemos decir que: las biblioteca estándar de c son librerías que nos
facilitan la programación en c ya que poseen funciones creadas que van a
realizar un trabajo en especifico en nuestro programa, estas funciones nos
pueden servir para e/s de datos, manejo de pantalla, manejo de cadenas y
caracteres, además de las funciones matemáticas.
46
Biblioteca Estándar del C
2011
Bibliografía y Web-grafías (Referencia electrónica)
1. Luis Joyanes Aguilar. Fundamentos de Programación, Algoritmos,
estructura de datos y objetos. Cuarta Edición. Mc Graw Hill
2. Google Chrome. Autor: Desconocido. Biblioteca Estándar del C. Fecha de
Publicación:
Desconocida.
15
de
abril
de
2011.
http://es.wikipedia.org/wiki/Biblioteca_est%C3%A1ndar_de_C
3. Google Chrome. Autor: Desconocido. Stdlib.h. Fecha de Publicación:
Desconocida. 17 de abril de 2011. http://es.wikipedia.org/wiki/Stdlib.h
4. Google Chrome. Autor: Desconocido. Ctype.h. Fecha de Publicación:
Desconocida. 17 de abril de 2011. http://es.wikipedia.org/wiki/Ctype.h
5. Google Chrome. Autor: Zator Systems. 9.1 Fecha y Hora. Fecha de
Publicación:
Desconocida.
17
de
abril
de
2011.
http://www.zator.com/Cpp/E9_1.htm
6. Google Chrome. Autor: Desconocido. Librerias de C. Fecha de
Publicación: Desconocida. 18 de abril de 2011.
http://docs.mis-algoritmos.com/c.funcion.putc.html
7. Google Chrome. Autor: Desconocido. Stdio.h. Fecha de Publicación:
Desconocida. 18 de abril de 2011. http://es.wikipedia.org/wiki/Stdio.h
8. Google Chrome. Autor: Alberto Pacheco. Funciones y Librerías. Fecha de
Publicación: 12 de marzo de 2007. 18 de abril de 2011.
http://expo.itch.edu.mx/view.php?f=c_35
9. Google Chrome. Autor: Marta Garduño. Archivo de Cabecera. Fecha de
Publicación: 16 de octubre de 2008. 18 de abril de 2011.
http://fcqi.tij.uabc.mx/docentes/mgarduno/program1/archivos_cabecera.htm
47
Descargar