Está en la página 1de 50

F.1. PlahIilla reIerehcia de ehIradas.

F.2. Fuhciohes de asighacih de memoria.


F.3. Fuhciohes de busqueda y ordehacih.
F.4. Fuhciohes de cadeha.
F.5. Fuhciohes de clasiIicacih de caracIeres.
F.6. Fuhciohes de calehdario (Iecha y hora).
F.7. Fuhciohes de cohIrol de direcIorios.
F.8. Fuhciohes de cohIrol de procesos.
F.9. Fuhciohes de cohversih de daIos.
F.10. Fuhciohes de ehIrada/salida.
F.11. Fuhciohes de gesIih de archivos.
F.12. Fuhciohes maIemaIicas.
F.13. Fuhciohes de mahipulacih de bloques de memoria (buIIers).
F.14. Fuhciohes de presehIacih de IexIo.
A P N D I C E F
B I B L I O T E C A D E F U N C I O N E S E S T N D A R
A N S I ] I S O C + + Y B O R L A N D C + + 5 . 0
Esta parte es una revisin breve de la biblioteca de rutinas (funciones) y
archivos include, en tiempo de ejecucin. La biblioteca de Borland C++ es
un conjunto de ms de 450 funciones y macros preparadas para utilizar y
diseadas para su uso en programas C++. La biblioteca en tiempo de ejecu-
cin hace la programacin ms fcil, ya que incluye una amplia variedad de
tareas tales como E/S de bajo y alto nivel, manipulacin de cadenas y archi-
vos, asignacin de memoria, control de procesos, clculos matemticos, etc.
Las rutinas de Borland C++ estn contenidas en los archivos de bibliote-
ca Cx.LIB, CPx.LIB, MATHx.LIB y GRAPHICS.LIB. Borland C++ imple-
menta la versin estndar ltima de ANSI C, que entre otras cosas recomien-
da el uso de los prototipos de funcin en las rutinas de sus programas C++.
Este apndice describe alfabeticamente funciones de la biblioteca Bor-
land C++ y contiene todas las funciones incluidas en ANSI/ISO C++.
F.1. PLANTILLA REFERENCIA DE ENTRADAS
Las entradas de las diferentes funciones y macros han sido normalizadas
para facilidad de manejo del lector. Las rutinas han sido clasificadas por
categoras (en general, se ha procurado respetar la clasificacin dada por
Borland y ANSI, pero con una adaptacin ms prxima al uso diario del
programador /.
Al comienzo de cada categora se hace una breve descripcin de su
cometido principal y se presenta una tabla con las funciones que contiene
cada categora por orden alfabtico, as como una breve sntesis de su des-
cripcin o propsito. A continuacin, por orden alfabtico, se describen las
rutinas de acuerdo al siguiente modelo para cada entrada.
F.2. FUNCIONES DE ASIGNACIN DE MEMORIA
Borland C++ almacena informacin en la memoria principal de la compu-
tadora por dos mtodos. El primero utiliza variables globales y locales
(incluyendo arrays, cadenas y estructura); en este caso, el almacenamiento
o longitudes fija. Para cambiar el tamao de arrays y cadenas de caracteres
se debe editar el archivo fuente y recompilar su programa. Esta informacin
se almacena en la pila (stack). El segundo mtodo de almacenar informa-
cin es asignar memoria a medida que el programa lo requiera y liberar esta
memoria cuando ya no se necesita; esta accin permite utilizar la misma
CONTENDO
nombre funcin archivo de cabecera
strrev #include <string.h>
char *strrev(char *cad) sintaxis
Descripcin
Propsito y breve descripcin de cmo y dnde se utiliza la funcin.
Ejemplo
Una o ms instrucciones o programas sencillos, donde se muestra la explicacin
real de la funcin.
Funciones relacionadas: strcpy, strncpy.
Funciones relacionadas con la funcin descrita.
memoria para colas diferentes en un tiempo distinto. Este proceso de asig-
nar memoria se denomina asignacin dinmica de memoria.
Por omisin, cada vez que se ejecuta un programa, DOS establece un
segmento de 64 Kb denominado segmento de cdigo, que contiene su cdi-
go programa. DOS establece tambin un segmento de 64 Kb denominado
segmento de datos. Su programa puede tener mltiples segmentos de datos
y cdigos.
El segmento de datos se divide en tres regiones: datos del programa
(variables estticas y globales), pila stack (variables locales y argu-
mentos) y montn o montculo heap.
Segmento de datos
Despus de asignar partes del segmento de datos a variables estticas y
globales y a la pila, el compilador dedica el resto del segmento de datos al
montculo o heap.
Borland C++ contiene un gran nmero de funciones para asignacin
dinmica de memoria, que realizan una gran variedad de tareas: asignar y
liberar memoria del montculo y de la pila, obtener informacin de bloques
de memoria, etc.
allocmen #include <dos.h>
int allocmen(unsigned t, unsigned * seg);
La funcin allocmen() establece seg para apuntar a un segmento asig-
nado de memoria de t prrafos (1 prrafo = 16 bytes) de largo. Si hay xito
se devuelve 1, si hay error (falta memoria), allocmen() devuelve el
tamao en prrafos del mayor bloque disponible.
if(allocmen(size, &segadd)!= -1)
printf (Error asignacin memoria \n);
Funciones relacionadas: falloc frremem, malloc, setblock.
brk #include <alloc.h>
int brk( void* a)
La funcin brk permite modificar el valor break de un programa. El
valor break es la direccin de la primera posicin ms all del segmento de
Montculo Pila Datos del programa
(heap) (stack)
datos de un programa. Si hay xito se devuelve 0; en caso contrario, 1, y la
variable global errnoc toma el valor ENOMEN (insuficiente memoria).
it(brk(nuevo_break) == -1)
perror(brk ha fallado);
Funciones relacionadas: free, farmalloc, malloc, sbrk.
calloc #include <stdlib.h>
#include <alloc.h>
int *calloc(size_t n, size_t s);
Asigna memoria principal (un bloque de tamao n.s). El bloque se
borra (limpia) a 0. Si se desea asignar un bloque mayor que 64 Kb, se debe
utilizar farcalloc. Devuelve un puntero al bloque recin asignado. Si no
existe bastante espacio para el nuevo bloque o bien n o s es 0, calloc
devuelve nulo.
long *buffer
buffer=(long *) calloc(40, sizeof(long));
Funciones relacionadas free, malloc.
coreleft #include <alloc.h>
unsigned coreleft(void) // modelos small, tiny, medium
unsigned long coreleft(void); // en otros modelos de memoria
Determina la cantidad de memoria no utilizada. El valor devuelto
depende del modelo de memoria.
Mem_avail = coreleft();
Funciones relacionadas: calloc, farcoreleft, malloc.
farcalloc #include <alloc.h>
void far *farcalloc(unsigned long n, unsigned long s);
Esta funcin asigna n piezas de tamao s y las pone a 0. Un puntero al
principio de la memoria asignada se devuelve si farcalloc() tiene xito;
en caso contrario se devuelve NULL.
616 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
if(array_grande=farcalloc(20000L, sizeof (int)) NULL)
printf (Fallo en asignacin de memoria\n);
Funciones relacionadas: calloc, farfree, farmalloc, malloc.
farcoreleft #include <alloc.h>
unsigned long farcoreleft(void);
Determina el nmero total de bytes disponibles en el sistema.
memoria_total_disponible = farcoreleft();
Funciones relacionadas: coreleft, farcalloc, farmalloc.
farfree #include <alloc.h>
void farfree(void far *b);
Libera la memoria apuntada por b.
farfree(arraygrande);
Funciones relacionadas: farcalloc, farmalloc, farrealloc, free.
farheapcheck #include <alloc.h>
int farheapcheck(void);
Verifica la consistencia del montculo (heap) far.
estadoheap = farheapcheck();
Funciones relacionadas: farheapcheckfree, farheapchecknode,
farheapwalk, heapfillfree, heapwalk, heapcheck.
farheapcheckfree #include <alloc.h>
int farheapcheckfree(unsigned int f);
Verifica la consistencia de los bloques libres en el montculo (heap) far.
estadoheap = farheapcheckfree(F);
Funciones relacionadas: farheapfillfree, farheapwalk, heapfill-
free, heapcheckfree, heapwalk.
farheapchecknode #include <alloc.h>
int farheapchecknode(void *bloque);
Verifica la consistencia de un solo bloque en el montculo (heap) far.
estadoheap = farheapchecknode(arraygrande);
farheapfillfree #include <alloc.h>
int farheapfillfree(unsigned int f);
Rellena todos los bloques libres del montculo far con un valor constante.
estadoheap = farheapfillfree(X);
Funciones relacionadas: farheapcheckfree, farheapchecknode,
farheapwalk, heapfillfree, heapwalk.
farheapwalk #include <alloc.h>
int farheapwalk(struct farheapinfo *m);
Obtiene informacin sobre las entradas en el montculo (heap) far.
struct farheapinfo heap_entry;
estadopila = farheapwalk(&heap_entry);
farmalloc #include <alloc.h>
void far *farmalloc(unsigned long n);
Asigna n bytes de memoria far. La cantidad completa de memoria
encima de la pila est disponible para asignacin por farmalloc. El tamao
del bloque puede exceder de 64 Kb.
if(bloquegrande = farmalloc(80000L) == NULL
printf(Asignacin fallada\n);
Funciones relacionadas: calloc, farfree, farcalloc, malloc.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 617
farrealloc #include <alloc.h>
void far *farrealloc(void far *b, unsigned long n)
Se utiliza para reasignar (ajustar el tamao de un bloque de memoria b,
al cual se ha asignado una longitud de n bytes).
if(bloquegrande = farrealloc(bloquegrande, 120000L)) = NULL
printf(Fallo reasignacin memoria\n);
Funciones relacionadas: calloc, farcalloc, farfree, malloc.
free #include<alloc.h>
#include <stdlib.h>
vid free(void *dir_memoria);
La funcin free() libera un bloque de memoria. El argumento
dir_memoria apunta a un bloque de memoria previamente asignado a
travs de una llamada a calloc, malloc o realloc. Despus de la llama-
da el bloque libre est disponible para asignacin.
char *cad;
// asignar memoria para cadena
cad = (char *) malloc(50);
...
free(cad); // liberar memoria
Funciones relacionadas: calloc, malloc, realloc
heapcheck #include <alloc.h>
int heapcheck(void);
Verifica la consistencia del montculo (heap). En Visual C++ 6.0 la fun-
cin equivalente es _heapcheck();
estadoheap = heapcheck();
Funciones relacionadas: heapcheckfree, heapchecknode, heapfill-
free, heapwalk, farheapcheck.
heapcheckfree #include <alloc.h>
int heapcheckfree(unsigned int f);
Verifica la consistencia de los bloques libres en el montculo (heap).
estadoheap = heapcheckfree(N);
Funciones relacionadas: farheapcheckfree, heapfillfree, heapwalk.
heapchecknode #include <alloc.h>
int heapchecknode(void *n);
Verifica la consistencia de un solo nodo (bloque de memoria). Verifica
el bloque de memoria identificado por el puntero n.
estadopila = heapchecknode(array);
Funciones relacionadas: farheapchecknode, heapcheck, heapcheck-
free, heapfillfree, heapwalk.
heapfillfree #include <alloc.h>
int heapfillfree(unsigned int f);
Rellena cada byte de todos los bloques de memoria no utilizados en el
montculo con un valor de carcter especificado. En Visual C++ la funcin
equivalente es heapset.
estadopila = heapfillfree(Z);
Funciones relacionadas: farheapfillfree, heapcheck, heapcheck-
free, heapwalk.
heapwalk #include <alloc.h>
int heapwalk(struct heapinfo *i);
Se utiliza para obtener informacin sobre las entradas en el montculo
(heap). La funcin equivalente en Visual C++ es _heapwalk.
618 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
struct heapinfo i;
estadoheap = heapwalk(&i);
Funciones relacionadas: farheapwalk, heapcheck.
malloc #include <stdlib.h>
#include <alloc.h>
void *malloc (size_t n);
Asigna memoria a bloques en el montculo. Devuelve un puntero, que
es la direccin inicial de la memoria asignada.
cadena = malloc(MAX_CHR)
Funciones relacionadas: calloc, free, realloc.
realloc #include <alloc.h>
#include <stdlib.h>
void *realloc(void *b, size_t n);
Ajusta el tamao de un bloque de memoria b asignado por malloc o
calloc a un tamao de n bytes. Devuelve un puntero void al bloque de
memoria reasignado.
Nuevo_buffer = realloc(viejo_buffer, long+100);
Funciones relacionadas: calloc, free, malloc.
sbrk #include <alloc.h>
void *sbrk(int n);
Se utiliza sbrk para indicar el valor break de un proceso. El valor
break es la direccin del primer byte disponible en el segmento de datos por
omisin, ms all del segmento de datos que est siendo utilizado por los
datos en el proceso.
sbr(500);
Funciones relacionadas: brk, coreleft
setblock #include <alloc.h>
int setblock(unsigned seg, unsigned n);
Ajusta el tamao de un bloque de memoria asignado anteriormente por
allocmen. Esta funcin llama a la funcin 4Ah de DOS para ampliar el
tamao de un bloque de memoria previamente asignado por allocmen. En
las versiones Visual C++ la funcin equivalente es _dos_setblock.
F.3. FUNCIONES DE BSOUEDA Y ORDENACIN
La mayora de los programas requieren casi siempre alguna operacin de
clasificacin y bsqueda de elementos en arrays. Borland C++ incluye dife-
rentes funciones que realizan estas tareas.
bsearch() #include <stdlib.h>
void bsearch(const void*k, const void *b, size_t n, size_t a,
int(*comparar)(const void*, const void*));
La funcin bsearch realiza una bsqueda binaria en un array ordena-
do b, de n elementos, cada uno de a bytes de tamao. El argumento k apun-
ta al valor que se est buscando. bearch devuelve un puntero (la direccin)
a la primera aparicin del valor k en el array. Si no se encuentra el valor,
bsearch devuelve o.
El argumento comparar proporciona la direccin de una rutina que
aceptar dos argumentos elem1 y elem2, cada uno un puntero a un elemen-
to del array. La funcin comparar compara cada uno de los elementos apun-
tados y devuelve un valor de acuerdo con la tabla siguiente:
Valor devuelto Condicin
Negativo Primer elemento menor que el segundo (elem1) (elem2).
Cero Los dos elementos son idnticos.
Positivo Primer elemento mayor que el segundo.
La bsqueda binaria requiere que el array est ordenado, por lo cual,
caso de que no est ordenado el array, se puede utilizar la funcin qsort
para ordenar el array antes de llamar a bsearch.
Funciones relacionadas: lfind, lsearch, qsort.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 619
lfind #include <stdlib.h>
void * lfind(const void k, const void *b, size_t *num, size_t
anchura, int(*comparar)(const void*, const void*));
La funcin lfind() realiza una bsqueda lineal de valor de k (clave) en
un array de un nmero especfico de elementos, cada uno de un nmero fijo
de bytes de longitud. Al contrario que bsearch(), el array no necesita
estar ordenado. lfind() devuelve un puntero al primer elemento del array
que coincide con la clave; si la clave no existe en el array, se devuelve un 0.
int comp(const void*, const void *); resultado = (char **)
lfind(palabrabuscada, envp, &cuenta, sizeof(char*), comp);
Funciones relacionadas: bsearch, lsearch, qsort.
lsearch #include <stdlib.h>
void * lsearch(const void *k, const void *a, size_t *n, size_t W,
int(*comparar) (const void*, const void *));
La funcin lsearch realiza una bsqueda lineal de la clave k. El
array a contiene n elementos de anchura W. La funcin comparar se uti-
liza para comparar la clave con el elemento actual del array. Al contrario
que bsearch(), en la funcin lsearch() el array no tiene que estar
ordenado. lsearch() devuelve un puntero al primer elemento del array
que se corresponde con la clave. Si no existe la clave en el array, se
devuelve 0 y un registro se aade al array con un valor de k.
La diferencia entre lsearch() y lfind() es que lsearch() aadir
un registro al final del array con un valor de la clave si ese registro no se ha
encontrado en el array.
Funciones relacionadas: bsearch, lfind, qsort.
qsort #include <stdlib.h>
void qsort(void a, size_t n, size_t w, int(*comparar) (const void*,
const void*));
La funcin qsort ordena un array con un nmero dado de elementos
utilizando el mtodo de ordenacin rpida quicksort (creado por C.A.R.
Hoare). El nmero de elementos de array es n y el tamao (en bytes) de cada
elemento es w. La funcin comparar se utiliza para comparar un elemento
del array con la clave; devuelve los siguientes valores:
Valor devuelto Condicin
Negativo Primer elemento (elem1) menor que el segundo (elem2).
Cero Los dos elementos son idnticos.
Positivo Primer elemento mayor que el segundo.
Ordenar la lista de enteros y visualizar el resultado.
#include <stdlib.h>
#include <stdio.h>
int comparar(const void*, const void *);
int numeros[10] = {4,5,7,3,12,8,6,1,0,2};
main(void)
{
int i;
printf(lista original:);
for(i =0; i < 10; i++)
printf(%d, numeros[i]);
qsort(numeros,10,sizeof(int), comparar);
printf(lista ordenada:);
for(i = 0; i < 10; i++)
printf(%10, numeros[i]);
return 0;
}
// comparar enteros
comparar(const void *i, const void *j)
{
return ((int *)i) ((int *) j)
}
Funciones relacionadas: bsearch, lfind, lsearch.
F.4. FUNCIONES DE CADENA
C no tiene el tipo de datos cadena (string). En su lugar, las cadenas se tratan
como arrays de caracteres, cada uno de los cuales ocupa un byte. Por notacin
el final de una cadena en C se representa por un byte que contiene un carcter
nulo (\0). Las cadenas pueden ser declaradas como arrays de caracteres.
char cad[20], cad 5[] = Hola Mortimer;
620 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
Acceso a Ias cadenas
A las cadenas se accede directamente a travs de su ndice, como en el
ejemplo anterior, o bien a travs de un puntero.
char cad5[] = Hola Mortimer;
char *p_cad5;
p_cad5 = cad5;
Se puede tambin declarar e inicializar una cadena a la vez:
char *p_cad5 = Hola Mortimer;
El archivo de cabecera <string.h> contiene numerosas funciones que
manipulan cadenas.
stpcpy #include <string.h>
char *stpcpy(char *cad1, const char *cad2);
La funcin stpcpy() copia una cadena en otra. Devuelve un puntero al
final de la cadena copiada. Se devuelve el valor de cad1+strlen(cad2)
stpcpy(orden_dos, DIR);
stpcpy(caad1, cad2);
Funciones relacionadas: strcat, strcpy, strncat, strncpy, strdup.
strcat #include <string.h>
char *strcat(char *cad1, const char cad2);
strcat() concatena (aade) cad1 al final de cad2, terminando la cade-
na resultante con un carcter nulo (\0).
char nombre[80] = Bob;
char blanco[2] = ;
char ultimo[80] = Marley;
...
strcat(nombre,blanco); // blanco se concatena a nombre
strcat(nombre,ultimo); // ultimo se concatena a nombre
// la cadena nombre ser Bob Marley
Funciones relacionadas: strcpy, strdup, strncat, strncpy.
strchr #include <string.h>
char *strchr(const char *cad, int c);
strchr() encuentra la primera aparicin de c en cad y devuelve un
puntero a la primera aparicin de c en cad. Si c no se encuentra, devuelve
un cero (NULL).
printf(%s, strchr(Salario mensual = $85725, $));
visualizar $85725
char *s[81] = Esta es una cadena de prueba;
char *ptr;
ptr = strchr(s, a);
el valor almacenado en ptr es un puntero a la primera aparicin de a.
strcmp #include <string.h>
int strcmp(const char *a, const char *b);
Compara una cadena con otra. Los resultados seran:
> 0 si a > b
= 0 si a == b
< 0 si a < b
i = strcmp(MNP, mnp); // resultado < 0
i = strcmp(abc, abc); // resultado = 0
i = strcmp(xy, abc); // resultado > 0
char s1[80] Mayo;
char s2[80] = Octubre;
int j;
j = strcmp(s1, s2);
Funciones relacionadas: strcmpi, stricmp, strnicmp, strncmp.
strcmpi #include <string.h>
int strcmpi(const char *cad1, const char * call2);
Compara una cadena con otra sin diferenciar entre maysculas y mins-
culas y devuelve un entero:
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 621
< 0 si cad1 < cad2
= 0 si cad1 = cad2
> 0 si cad1 > cad2
v = strcmpi(c1, c2);
Funciones relacionadas: strcmp, stricmp, strncmp, strnicmp.
strcoll #include <string.h>
int strcoll(const char *cad1, const char cad2);
Compara cad1 con cad2. Devuelve un valor.
< 0 si cad1 < cad2
= 0 si cad1 = cad2
> 0 si cad1 > cad2
if(strcoll(nombre1, nombre2)! = 0)
exit(EXIT_FAILURE);
Funciones relacionadas: setlocate, strcmp, strcmpi, strncmp,
strxfrm.
strcpy() #include <string.h>
char *strcpy(char *cad1, const char *cad2);
strcpy() copia cad2 en cad1. Si la longitud de la cadena resultante
excede el tamao asignado a cad1, puede producir fallos en el programa.
char *a = Pepe Luis;
char b[12];
strcpy(b, a);
cout << b << \n;
Funciones relacionadas: strcat, strcup, strncat, strncpy.
strcspn #include <string.h>
size_strcspn(const char *cad1, const char *cad2);
Localiza la posicin de la primera aparicin en una cadena de cualquier
carcter de otra cadena. Si tiene xito, la funcin strcspn devuelve el ndi-
ce del primer carcter de cad1, que pertenece al conjunto de caracteres de
cad2.
primero = strcspn(circunloquio, q);
// primero = 8
Funciones relacionadas: strpbrk, strspn.
strdup #include <string.h>
char * strdup(const char *cad);
Asigna memoria y copia una cadena dada en ese espacio. En realidad,
strdup() llama a malloc para asignar suficiente memoria para contener a
cad. Si falla la asignacin de memoria, strdup() devuelve un carcter nulo
(NULL).
Leer una cadena y hacer un duplicado.
#include <stdio.h>
#include <string.h>
main()
{
char cad1[80], * cad1_copia;
printf(Introduzca una cadena:);
gets(cad1);
cad1_copia = strdup(cad1);
printf(La cadena duplicada es:%s\n, cad1_copia);
return 0;
}
strerror #include <string.h>
char *strerror(int errnum);
Obtiene el mensaje de error del sistema correspondiente al nmero dado
en el argumento errnum. La funcin strerror() obtiene el mensaje de
error del sistema utilizando el valor en la variable global errno, como el
ndice una tabla de errores denominadas sys_errlist, que est declarado
en el archivo de cabecera stdlib.h.
errno = 0;
printf (Error, strerror(errno);
Funciones relacionadas: perror, _strerror.
622 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
strerror #include <string.h>
#include stdio.h
char *strerror(const char *cad);
Esta funcin sirve para generar un mensaje de error definido por el
usuario.
printf(%S, _strerror(error apertura archivo));
Funciones relacionadas: perror, strerror.
stricmp #include <string.h>
it stricmp(const char *cad1, const char *cad2);
Esta funcin se utiliza para comparar una cadena a otra sin tener en
cuenta el tamao de las letras. Convierte todos los caracteres alfabticos de
cad1 y cad2 en minsculas; a continuacin, se comparan las dos cadenas y
devuelve un valor entero que indica el orden lexicogrfico de cad1 con res-
pecto a cad2.
Si cad1 = cad2 el valor de la funcin es cero.
Si cad1 < cad2 el valor de la funcin es menor que cero.
Si cad1 > cad2 el valor de la funcin es mayor que cero.
Resultado = stricmp(cad1, cad2),
Funciones relacionadas: strcmp, strcmpi, strncmp, strnicmp.
strlen #include <strign.h>
size_t strlen(const char *cad);
Proporciona la longitud de una cadena cad. El carcter nulo no se inclu-
ye en la longitud; en consecuencia, cuando reserve espacio, recuerde aadir
1 al valor devuelto por strlen.
longitud = strlen(nombre);
char s[81] = Cadena demo;
printf(La longitud de s es:%d\n strlen(s));
Funciones relacionadas: _fstrlen.
strlwr #include <string.h>
char *strlwr(char *cad);
Convierte una cadena en letras minsculas. La funcin devuelve un
puntero a la cadena convertida.
char *orden =SALIR;
strlwr(orden); // ahora orden = salir;
Funciones relacionadas: strupr, toloweer.
strncat #include <string.h>
char *strncat(char *cad1, const char *cad2, size_t n);
La funcin strncat() aade los primeros n caracteres de cad2 a cad1,
y termina la cadena resultante un carcter nulo. Si cad2 es mayor que n
caracteres de longitud, strncat() truncar la cadena a la longitud de n. En
otro caso, concatenar la cadena completa.
char *a = Sierra Madre;
char *b = de la ciudad de Monterrey;
cout << strncat(a, b, 4) << \n;
cout << strncat(a, b) << \n;
Funciones relacionadas: strcat, strdup, strcpy, strncpy.
strncmp #include <string.h>
int strncmp(const char *cad1, const char *cad2, size_t n);
Compara un nmero especificado en caracteres de dos cadenas y
devuelve un entero con un valor.
< 0 si cad1 < cad2
= 0 si cad1 < cad2
> 0 si cad1 < cad2
char *a = Mortimer el andaluz;
char *b = Mortimer el mexicano;
if((strncmp(a, b, 8)) == 0)
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 623
cout << Ambas cadenas comienzan con \Mortimer\;
else
cout << Estas cadenas no comienzan con \Mortimer\;
Funciones relacionadas: strcmp, strcoll, stricmp, strncmp, str-
nicmp.
strnset #include <string.h>
char *strnset(char *cad, int c, size_t n);
Inicializa los caracteres de una cadena a un valor dado (blanco u otro
carcter). Devuelve un puntero a la cadena cad. El carcter c se utiliza para
rellenar la cadena con ese carcter; n es el nmero de posiciones de carac-
teres que se han de inicializar.
printf(Introduzca una cadena:);
gets(cadena);
printf(Introducir un carcter:);
c = getche();
long = strlen(cadena)/2;
strnset(cadena, c, lon);
Funciones relacionadas: memset, setmem, strset.
strpbrk #include <string.h>
char *strpbrk(const char *cad1, const char *cad2);
Encuentra la primera aparicin en cad1 de cualquiera de los caracteres
de cad2. El carcter nulo no se incluye en la bsqueda. Si el carcter no
existe, se devuelve un carcter nulo (NULL).
char *s = Mortimer L.J. Mackoy;
char *p = strpbrk(s, L4);
cout << p << \n; // la salida es L.J.Mackoy
Funciones relacionadas: strchr, strcspn.
strrchr #include <string.h>
char *strrchr(const char *cad, int c);
Encuentra la ltima aparicin del carcter c en cad. Devuelve un pun-
teo a la ltima aparicin de c o un carcter nulo si c no est en cad.
char *nombrearch = c: /usr/tst/libro/cap1.txt;
cout << (strrchr(nombrearch, /)+1 << \n;
Funciones relacionadas: strchr.
strrev #include <string.h>
char *strrev(char *cad);
Invierte los caracteres de la cadena cad. El carcter de terminacin nulo
permanece en el mismo lugar. strrev() devuelve un puntero a la cadena
inversa.
Aplicacin: Invertir una cadena leda del teclado e imprimir el resultado.
#include <stdio.h>
#include <string.h>
main()
{
char demo[80]
printf(Introduzca una cadena:);
gets(demo);
strrev(demo);
printf(La cadena inversa es:\n %s |\n, demo);
return 0;
}
Funciones relacionadas: strcpy, strncpy.
strset #include <string.h>
char *strset(char *cad, int c);
Establece todos los caracteres de la cadena cad al valor de c. Termina
cuando se encuentra el primer carcter nulo. Devuelve un puntero a la cade-
na modificada.
char *cad = -----;
strset (cad, x); // cad es ahora xxxxx
Funciones relacionadas: strnset.
624 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
strspn #include <string.h>
sze_t strspn(const char *cad1, constchar *cad2);
Localiza la posicin del primer carcter de una cadena (cad1) que no
pertenece al conjunto de caracteres de otra (cad2).
loc = strspn (cad1, blanco);
Funciones relacionadas: strcmp, strcspn.
strstr #include <string.h>
char *strstr(const char *cad1, const char *cad2);
Localiza la primera aparicin de una cadena en otra. Si tiene xito, la
funcin strstr devuelve un puntero a la primera aparicin de cad2 como
una subcadena de cad1. Si la bsqueda falla, se devuelve NULL.
char *s = Mi autor favorito es Octavio Paz
char *a = Octavio Paz;
cout << La subcadena << a << se encuentra:
<< strstr(s, a) << \n;
Funciones relacionadas: strchr, strcspn, strpbrk
strtok #include <string.h>
char *strtok(char *cad1, const char *cad2);
Rompe una cadena en subcadenas (token) utilizando una lista de sepa-
radores. Devuelve un puntero a la subcadena actual y un NULL cuando se
alcanza el final de la cadena.
char *s = Prefiere a Verdi, o a Pucini?;
char *t = .,!* ;
cout << strtok(s, t) << \n;
cout << strtok(NULL, !);
Funciones relacionadas: strpbrk, strcspn.
strupr #include <string.h>
char *strupr(char *cad);
Convierte cualquier letra minscula de la cadena en mayscula y
devuelve un puntero a la cadena convertida (slo alfabeto ingls).
La funcin strupr y su homnima strlwr no forman parte de la biblio-
teca ANSI C. En estos casos, utilice las funciones toupper y tolower.
strupr(sierra madre); // SIERRA MADRE
Funciones relacionadas: strlwr, toupper.
strxfrm #include <string.h>
size_t strxfrm(char *cad1, char *cad2, size_t n);
Convierte cad2 en cad1 basado en informacin especfica local y con
un nmero mximo de caracteres a situar en cad1 de n. En el siguiente
ejemplo, strxfrm transforma los tres primeros caracteres de cad1 en los
tres primeros caracteres de cad2.
char *cad1 = abcdefg;
char *cad2 = 1234567;
clrscr();
strxfrm(cad1, cad2, 3);
printf(Transformada: %s\n, cad1);
F.5. FUNCIONES DE CLASIFICACIN
DE CARACTERES
C utiliza el conjunto de caracteres ASCII. Con frecuencia se necesita deter-
minar la categora de un carcter o convertir un carcter de maysculas en
minsculas, o viceversa. La biblioteca C contiene funciones que pueden ser
definidas como macros para estos propsitos. Las macros estn definidas en
el archivo de cabecera ctype.h.
Las macros de clasificacin sirven para determinar qu clase de valor
contiene una variable carcter. Puede necesitar conocer esta caracterstica
para identificar ciertas clases de caracteres. Por ejemplo, si su programa
pide al usuario que teclee un nmero, pero el usuario teclea en su lugar
una letra, ser preciso capturar el error. Otro caso es cuando desea imprimir
un archivo, y necesita asegurarse de que el archivo contiene slo caracteres
imprimibles, en caso de que desee que su programa acepte caracteres de
control, necesita saber cundo pulsa el usuario un carcter de control. En
resumen, cada vez que necesite identificar el tipo de tecla que ha pulsado el
usuario, se pueden utilizar las macros de clasificacin.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 625
Asimismo, existen otras funciones en el archivo ctype.h que sirven
para convertir caracteres en maysculas en minsculas, y viceversa; y valo-
res enteros en cdigos ASCII.
isalnum #include <ctype.h>
int isalnum(int c);
La funcin isalnum() devuelve un cero si c es un carcter no alfa-
numrico y un valor distinto de cero si el carcter es alfanumrico.
carac = getch();
if(isalnum(carac))
printf(%c letra|digito \n, carac);
else
printf(%c no letra|digito \n, carac);
Funciones relacionadas: isascii.
isalpha #include <ctype.h>
int isalpha(int c);
La funcin isalpha() verifica si un carcter es alfabtico. Devuelve un
valor distinto de cero si c es un carcter alfabtico, o 0 si c no es alfabtico.
int c = getah()
if(isalpha) printf(%c es letra\n, c);
Funciones relacionadas: iascii.
isascii #include ctype.h>
int isascii(int c);
Comprueba si un carcter c es un carcter ASCII; c est en el rango 0-127.
Los caracteres 128 a 255 de ASCII son tratados por iascii() como no ASCII.
carac = getch();
if(isascii(carac))
printf(%c es ASCII \n, carac);
else
printf(%c no es ASCII \n, carac);
Funciones relacionadas: toascii, isalnum, isdigit,
iscntrl, isdigit #include <ctype.h>
isgraph, islower
isprint, ispunct, isspace
isupper,isxdigit
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
Estas macros sirven para determinar propiedades especficas de un
carcter ASCII.
Macro Verifica Rango vlido de valores
iscntrl Carcter de control. 0..1Fh, 7Fh
isdigit Dgito decimal. 0..9
isgraph Carcter imprimible (sin espacio). 21h a 7Eh
islower Carcter minscula. a..z
isprint Carcter imprimible 20h..7Eh
ispunct Carcter puntuacin 21h..2Fh, 3Ah..40h,
5Bh..60h, 7Bh..7Eh
isspace Carcter blanco. 9h..Dh 0 20h (blanco)
isupper Carcter mayscula. A..Z
isxdigit Dgito hexadecimal. 0..9
A..F
a.. f
Cada macro (funcin) devuelve un valor distinto de cero si c satisface
el criterio de esa macro; en caso contrario, devuelve un cero.
if(isprint(c)) printf(\n %c imprimible\n, c);
if(iscntrl(c)) printf(%c es un carcter de control\, c);
if(isdigit(c)) printf(%c es un dgito\n, c);
if(islower(c)) printf(%c es letra minscula\n, c)
Funciones relacionadas: iascii.
626 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
toascii #include <ctype.h>
int toascii(int c);
Esta funcin convierte un valor entero en un carcter ASCII vlido.
C = toascii(entero);
Funciones relacionadas: iascii.
_tolower
tolower #include <ctype.h>
int _tolower(int c);
int tolower(int c);
Convierte un carcter mayscula en minscula. Utilice _tolower slo
cuando est seguro de que el carcter que quiere convertir es una letra
mayscula.
La funcin _tolower() slo est disponible en sistemas UNIX. Por
consiguiente, para asegurar la compatibilidad utilice slo la funcin tolo-
wer().
c = tolower(S); // c se convierte en S
Funciones relacionadas: iascii, _toupper, toupper.
_toupper
touper #include <ctype.h>
int _toupper(int c);
int _toupper(int c);
int c; // carcter a convertir
Estas funciones convierten un carcter minscula en mayscula. Utili-
ce _toupper slo cuando est seguro de que el carcter que quiere conver-
tir es una letra minscula (rango a-z).
La macro _toupper no est disponible en ANSI C. Para asegurar la
compatibilidad, utilice siempre toupper().
c = toupper(S); // c se convierte en S
Funciones relacionadas: iascii, _tolower, tolower.
F.6. FUNCIONES DE CALENDARIO (FECHA Y HORA)
Las funciones de calendario (fecha y hora) permiten obtener la hora actual
y, a continuacin, convertirla y almacenarla de acuerdo a sus necesidades
particulares. La hora actual se toma siempre de la hora del sistema. Las fun-
ciones de calendario estn incluidas en el archivo de cabecera time.h.
asctime #include <time.h>
char *asctime(const struct tm *hora);
Convierte la fecha y la hora almacenada en una estructura de tipo tm en
una cadena de caracteres. La estructura tm se define en time.h as:
struct tm
{
int tm_sec; // [0,59], segundos
int tm_min; // [0,59], minutos
int tm_hour; // [0,23], horas
int tm_mday; // [1,31], dias del mes
int tm_mon; // [0,11], mes del ao
int tm_year; // [desde 1900], ao
int tm_wday; // [0,6], dias desde domingo
int tm_yday; // [0,265], numero dia ao
int tm_isdst; // indicador hora de verano
};
printf(Fecha/hora es %s\n, asctime(&reloj));
Funciones relacionadas: ctime, gmtime, clocaltime, strftime,
time.
clock #include <time.h>
cock_t clock(void);
Calcula el tiempo empleado por el proceso llamador, es decir, el tiem-
po utilizado de procesador. Devuelve un valor en ticks que ha de dividirse
por la constante CLK_TCK para obtener el tiempo transcurrido en segundos.
clock_t inicio, fin;
printf(Inicio:%f\n, clock()/CLK_TCK;
Funciones relacionadas: gettime, time.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 627
ctime #include <time.h>
char *ctime(const time_t *hora);
Convierte la fecha y hora almacenada como valor de tipo time_t en una
cadena de caracteres (mes da hora ao\0).
time_t hora;
hora = time(NULL);
printf(Hora actual=%s\n, ctime(&hora));
Funciones relacionadas: asctime, ftime, strtime, time.
difftime #include <time.h>
double difftime(time_t hora2, time_t hora1);
Obtiene la diferencia entre dos tiempos en segundos.
time_t inicio, fin
clrscrl();
inicio = time(NULL);
delay (5000);
fin = time(NULL);
printf(Diferencia en segundos: %f\n,
difftime(inicio, fin));
Funciones relacionadas: asctime, ctime, gmtime, localtime,
tzset.
dostounix #include <dos.h>
long dostounix(struct date *f, struct time *h);
Convierte la fecha y hora DOS (devuelta por getdate y gettime) en
formato UNIX.
time_t t;
struct time dos_hora;
struct date dos_fecha;
gatdate(&Dos_hora);
gettime(&dos_fecha);
t = dostounix(&dos_fecha, &dos_hora);
Funciones relacionadas: ctime, gatdate, gettime.
ftime #include <sys/timeb.h>
void ftime(struct timeb *ptrhora);
Obtiene la hora actual y la almacena en la estructura timeb apuntada
por ptrhora.
struct timeb {
long time; // segundos desde 00:00:00 hora GMT
short millitm; // milisegundos
short timezone; // diferencia en minutos
// hora Greenwich y hora local
short dstflag; // hora de verano, ahorro de luz
};
ftime(&hora);
Funciones relacionadas: time tzset.
getdate #include <dos.h>
void getdate(struct date *f);
Obtiene la fecha del sistema. Los componentes se almacenan en la
estructura date definida en dos.h.
struct date {
int da_year; // ao actual (1980-2099)
char da_day; // dia mes (1-31)
char da_mon; // mes (1-12)
};
struct date fecha;
getdate(&fecha);
Funciones relacionadas: dostounix, gettime, setdate, settime.
gettime #include <dos.h>
void gettime(struct time *t);
Obtiene la hora actual del sistema. Los componentes de la hora se alma-
cenan en la estructura time definida en dos.h.
struct time {
unsigned char ti_min // minutos (0-59)
628 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
unsigned char ti_hour // horas (0-23)
unsigned char ti_hund // centsimas de segundo (0-99)
unsigned char ti_sec // segundos (0-59)
};
struct time hora;
gettime(&hora);
Funciones relacionadas: dostounix, getdate, setdate, settime.
gmtime #include <time.h>
struct tm *gmtime (const time_t *hora);
Convierte la fecha y hora en el tiempo medio de Greenwich (GMT)
(ao, mes, da, hora, minutos, segundos y otros campos). Vase struct tm
en asctime.
ahora = gmtime(&hoy);
Funciones relacionadas: asctime, ctime, ftime, localtime, time.
localtime #include <time.h>
struct tm *localtime(const time_t *hora);
Convierte una fecha y hora en varios campos de una estructura de tipo
tm. Vase struct tm en asctime.
tiempoactual = localtime(&ahora);
Funciones relacionadas: asctime, gmtime, time.
mktime #include <time.h>
time_t mktime(struct tm *h);
Convierte la hora local a un valor de calendario. Vase struct tm en
asctime.
Funciones relacionadas: asctime, gmtime, localtime, time.
setdate #include <dos.h>
void setdate(struct date *f);
Cambia la fecha actual del sistema. Los componentes de la fecha (da,
mes. Ao) se especifican en los campos de la estructura date.
struct date {
int da_year; // ao actual
char da_day; // da mes
char da_mon; // mes, 1 para enero, 2...
};
En Visual C++ la funcin equivalente es _dos_setdate.
setdate(&fecha);
Funciones relacionadas: getdate, gettime, settime, dostounix.
settime #include <dos.h>
void settime(struct time *h);
Cambia la hora actual del sistema. Los componentes de la hora hora,
minutos y segundos se deben cargar en los campos apropiados de la
estructura time definida en dos.h. Vase gettime.
settime(&hora);
Funciones relacionadas: dostounix, gatdate, gettime, setdate.
stime #include <time.h>
int stime(time_t *t);
Establece la fecha y hora del sistema al valor contenido en la posicin
cuya direccin est en el argumento t.
time_t horasis;
horasis = time(NULL);
stime(&horasis);
printf(segundos desde 1/1/70 %ld, horasis);
Funciones relacionadas: dostounix.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 629
strftime #include <time.h>
size_t strftime(char *cad, size_t maxlon,
const char *formato, const struct tm *t);
Convierte un puntero en una estructura tm en una cadena cad (con una
longitud mxima de n), utilizando f para dar formato a la cadena. El forma-
to es similar a printf().
horaseg = time(NULL);
horaactual = localtime(&horaseg);
strftime(buffer, 80, %A %B %d 19%y:I:%M, horaactual);
Funciones relacionadas: asctime, ctime, gmtime, localtime,
time.
time #include <time.h>
time_t time(time_t *h);
Proporciona el tiempo del sistema en segundos desde las 00:00:00 de
1/1/1970 tiempo GMT.
time(&hora);
tzset #include <time.h>
void tzset(void);
Establece las variables de entorno horarios TZ; asigna valores a las
variables globales timezone, daylight y tzname.
tzset();
printf(Luz de verano = %d\n, daylight);
printf(zona horario = %ld\n, timezone);
Funciones relacionadas: asctime, ftime, gmtime, localtime,
time.
unixtodos #include <time.h>
void unixtodos(long time, struct date *f, struct time *h);
Convierte a formato DOS un valor de hora en el formato UNIX.
tnixtodos(t_unix, &d_dos, ft_dos);
Funciones relacionadas: getdate, gettime, time, setdate, settime.
F.7. FUNCIONES DE CONTROL DE DIRECTORIOS
MS-DOS, al igual que UNIX, utiliza un sistema de archivos jerrquico que
permite al usuario organizar sus archivos en directorios y subdirectorios.
Las funciones de control de directorios en Borland C++ proporcionan las
herramientas necesarias para crear, modificar, mover y eliminar directorios
desde sus programas C. Las funciones de manipulacin de directorios resi-
den en el archivo de cabecera dir.h.
chdir #include <dir.h>
int chdir(const char *camino);
Cambia el directorio de trabajo actual al directorio especificado en el
argumento camino. La funcin devuelve un 0 si tiene xito; en caso contra-
rio, devuelve un valor de 1 para asignar el error. Cuando se produce un
error, la variable global errno toma el valor ENOENT (camino o archivo no
encontrado).
if(chdir(\\)) {
perror(chdir());
exit(1);
}
Funciones relacionadas: mkdir, rmdir, setdisk, system.
findfirst #include <dir.h>
int findfirst(const char *camino, struct ffblk *ffblk, int atrib);
Busca en un directorio de disco hasta encontrar el primer archivo cuyo
nombre y atributos se corresponden con los valores especificados. El for-
mato de la estructura ffblk es:
struct ffblk {
char ff_reserved[21]; // reservada por DOS
630 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
char ff_atrib; // encontrado atributo
int ff_ftime; // hora archivo
int ff_date; // fecha archivo
long ff_fsize; // tamao archivo
char ff_name[13]; // encontrado nombre de archivo
};
La variable attrib viene definida en el archivo de cabecera <dos.h> y
puede ser igual a uno de estos valores:
FA_RDONLY Archivo de slo lectura.
FA_HIDDEN Archivo oculto.
FA_SYSTEM Archivo del sistema.
FA_LABEL Etiqueta de volumen.
FA_DIREC Directorio.
FA_ARCH Bit de archivo activado.
struct ffblk ffblk;
int t;
t = findfirst(*.*, &ffblk,0);
Funciones relacionadas: findnext.
findnext #include <dir.h>
int findnext(struct ffblk *ffblk);
findnext contina la bsqueda de findfirst(). findnext llama a
la funcin 4Fh de DOS para encontrar el siguiente archivo cuyo nombre y
atributos son idnticos a los dados en la llamada a la funcin findfirst().
findnext(&filefinfo);
Funciones relacionadas: findfirst.
fnmerge #include <dir.h>
void fnmerge(char *camino, const char *u, const char *dir,
const *nombrearch, const char *ext);
Crea un nombre de camino completo compuesto de una letra de la uni-
dad (u), camino del directorio (dir), nombre de archivo (nombrearch) y
extensin del archivo (ext).
fnmerge(camino, c:, \\aux\\,demo,.dat);
Funciones relacionadas: fnsplit.
fnsplit #include <dir.h>
void fnsplit(const char *camino, char *u, char *dir,
char *nombrearch, char *ext);
Separa un nombre de camino completo en sus componentes: letra de la
unidad (u), camino del directorio, nombre del archivo y extensin del archi-
vo (ext).
h = fnsplit(camino, unidad, dir, nomarch, ext);
Funciones relacionadas: fnmerge.
getcurdir #include <dir.h>
int getcurdir(int u, char *dir);
Obtiene el directorio de trabajo actual en una unidad especfica. El
nmero de la unidad (u) 0 indica la unidad actual por omisin, 1 significa
unidad A, 2 unidad B, etc. La funcin devuelve un cero si tiene xito, en
caso de error devuelve 1.
getcurdir(3, cuentas);
Funciones relacionadas: getcwd, getdisk.
getcwd #include <dir.h>
char *getcwd(char *camino, int numcar);
getcwd obtiene el nombre de camino completo del directorio de traba-
jo actual, incluyendo el nombre de la unidad. El argumento numcar indica
a getcwd el mximo nmero de caracteres que el buffer camino puede con-
tener. La funcin getcwd es til para obtener el nombre del directorio actual
y guardarlo. Si su programa cambia los directorios de trabajo durante su eje-
cucin, puede utilizar el nombre guardado para restaurar el directorio de tra-
bajo actual antes de terminar.
getcwd(cuentas, 80)
Funciones relacionadas: chdir.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 631
getdisk #include <dir.h>
int getdisk(void);
La funcin getdisk obtiene el valor entero que representa la unidad
actual (0, unidad A; 1, unidad B...)
int unidad;
clscr();
unidad = getdisk();
Funciones relacionadas: setdisk.
mdir #include <dir.h>
int rmdir(const char *camino);
Elimina el directorio escrito por la variable camino, siempre que el
directorio est vaco, no sea el directorio raz y no sea el directorio de tra-
bajo rmdir(); devuelve 0 si la operacin de borrado tiene xito; si se pro-
duce un error, el valor devuelto es 1 y la variable global errno se fija a uno
de los siguientes valores:
EACCES Permiso denegado.
ENOENT Camino archivo no encontrado.
Esta funcin es similar a RMDIR o RD de MS-DOS.
rmdir(C:\\PRUEBAS); Supresin de directorio PRUEBAS
Funciones relacionadas: chdir, mkdir.
mkdir #include <dir.h>
int mkdir(const char *camino);
Crea un directorio con un nombre de camino especificado. Funciona
igual que la orden MKDIR o MD de DOS. Devuelve 0 si el directorio se ha
creado con xito o 1 si se produce un error; en este caso, la variable global
errno toma el valor EACCES (permiso denegado) o ENOENT (nombre de
camino no vlido).
EACCES Permiso denegado.
ENOENT Camino no encontrado.
resultado = mkdir(PRUEBAS);
// crea el directorio PRUEBAS
Funciones relacionadas: chdir, rmdir.
mktemp #include <dir.h>
char *mktemp(char *plantilla);
Crea un nombre de archivo a partir de una plantilla. Devuelve un pun-
tero al nombre del archivo si tiene xito y nulo en caso de error.
mktemp(nombre);
searchpath #include <dir.h>
char searchpath(const char *nombre);
Busca un archivo especfico en una lista de directorios, incluyendo el
directorio de trabajo actual y los definidos en la variable de entorno PATH.
Si el archivo se encuentra, se devuelve un puntero al nombre del camino del
archivo; en caso contrario, se devuelve NULL.
buffer = searchpath(BC.EXE);
Localizar el archivo AUTOEXEC.BAT en los directorios definidos en la
variable de entorno PATH.
buffer = searchpath(autoexec.bat);
Funciones relacionadas: getenv, putenv.
setdisk #include <dir.h>
int setdisk(int unidad);
Cambia a una nueva unidad por omisin. El valor de la unidad (unidad)
es un entero.
Unidad A
B:
C:
D:
...
nuevaunidad = setdisk(3); / nueva unidad actual es C:
Funciones relacionadas: getdisk
632 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
F.8. FUNCIONES DE CONTROL DE PROCESOS
Un proceso es un programa ejecutable en memoria y su entorno asociado.
Cada vez que se ejecuta un programa se crea un proceso.
En resumen, un proceso es un programa que se est ejecutando por el
sistema operativo. Consta del cdigo del programa y de datos, adems de
informacin relativa al proceso, tales como nmero de archivos abiertos.
Siempre que se ejecuta un programa al nivel del sistema operativo se arran-
ca un proceso.
Las funciones de control de proceso permiten arrancar, detener y ges-
tionar procesos desde dentro de un programa. La mayora de las funciones
de control se declaran en el archivo de cabecera process.h; otros archivos
de cabecera que contienen funciones de control de proceso y del entorno son
locale.h, signal.h, setjmp.h y stdlib.h.
abort #include <process.h>
#include <stdlib.h>
void abort(void);
Termina la ejecucin del programa actual y devuelve un cdigo de
error (3).
if (argc 1) {
printf(Faltan argumentos!\n)
abort()
}
Funciones relacionadas : exit, _exit, raise, signal, spaw.
assert #include <assert.h>
void assert(int expresin);
Imprime un mensaje de error e interrumpe el programa si expresin es
falsa (0).
assert(string != NULL;
assert(*string != \0);
assert(strlen(string) < 2);
Funciones relacionadas: abort, raise, signal.
atexit #include <stdlib.h>
int atexit(void(*func)(void));
Procesa la funcin especificada al salir.
atexit(segundo);
Funciones relacionadas: abort, exit, _exit.
exec(familia) #include <process.h>
int excel(char *camino, char *arg0,...,NULL);
int execle(char *camino, char *arg0,..., *argn, NULL, char **env);
int execlp(char *camino, char *arg0, arg1,...,NULL);
int execlpe(char *camino, char *arg0,...argn, NULL, char **env);
int execv(char *camino, char argv[]);
int execve(char *camino, char argv[], char **env);
int execvp(char *camino, char *argv[]);
int execvpe(char *camino, char *argv[], char **env);
Cargan y ejecutan un proceso hijo en la memoria actualmente ocupada
por su cdigo del programa. Las funciones exec crean un proceso hijo que
carga y ejecuta el programa especificado por el argumento camino.
execlo(hijo.exe, hijo.exe, Uno, Dos, NULL);
execv(hijo.exe, argv);
Funciones relacionadas: abort, atexit, exit, _exit, fpreset, spawn.
exit #include <stdlib.h>
void exit(int estado);
Termina un programa. Antes de terminar, se cierran todos los archivos,
se escribe la salida a travs del buffer y se llama a cualquier funcin exit
registrada. estado representa el estado de salida del programa; 0, salida
normal; distinto de cero, indica un error.
exit(0);
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 633
Funciones relacionadas: abort, atexit, exit, exit, fpreset,
spawn, system.
_exit #include <stdlib.h>
void _exit(int estado);
Termina inmediatamente el proceso actual sin hacer otras operaciones
auxiliares (como cierre de archivos).
_exit(0)
Funciones relacionadas: exit.
getenv #include <stdlib.h>
char *getenv(const char *nomvar);
Obtiene la definicin de una variable de la tabla de entorno del proce-
so. Utiliza la variable global environ para localizar la lista de las variables
de entorno y, a continuacin, busca una entrada en la lista correspondiente
a nomvar.
varlib = getenv(LIB);
Funciones relacionadas: putenv.
getpid #include <process.h>
unsigned getpid(void)
Obtiene el ID de proceso de un programa. Est disponible en sistemas
UNIX.
printf(PID:%X\n,getpid());
Funciones relacionadas: getpsp.
localeconv #include <locale.h>
struct lconv *localeconv(void);
Obtiene informacin detallada sobre formatos monetarios y numricos
de diferentes pases.
p_lconv = localeconv();
Funciones relacionadas: setlocale.
longjmp #include <setjmp.h>
void longjmp(jmp_buf env, int valor);
Restaura el estado de la pila y la ejecucin local anteriormente grabada
en env por setjmp.
longjmp(plaza, 3);
Funciones relacionadas: setjmp.
perror #include <stdio.h>
void perror(const char *cadena);
Imprime un mensaje de error del sistema en el flujo stderr. El argu-
mento cadena se imprime primero, seguido por dos puntos; a continuacin,
el mensaje de error correspondiente al valor actual de la variable global
errno y, finalmente, un carcter de nueva lnea. Si cadena es un puntero
nulo o un puntero a una cadena nula, perror imprime slo el mensaje de
error del sistema.
perror(Error de cierre de archivos);
Funciones relacionadas: _strerror, strerror.
putenv #include <stdlib.h>
int putenv(const char *cadena);
Crea nuevas variables de entorno o modifica los valores de las variables
de entorno existentes.
if(putenv(argv[1] == -1)
Funciones relacionadas: getenv.
634 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
raise #include <signal.h>
int raise(int seal);
Enva una seal al programa en ejecucin. Crea una condicin de
excepcin correspondiente al nmero seal. Existen diferentes constantes,
por ejemplo, SIGABRT (terminacin anormal).
printf(prueba de raise\n);
raise(SIGABRT);
Funciones relacionadas: abort, signal.
setjmp #include <setjmp.h>
int setjmp(jmp_buf env);
Guarda el estado actual del programa (el entorno de la pila) antes de lla-
mar a otra funcin. Este entorno puede ser restaurado por una llamada a
longjmp, realizando el efecto de un goto no local.
if(setjmp(env) != 0) printf(valor de longjmp\n);
Funciones relacionadas: longjmp.
signal #include <signal.h>
void (*signal(int sig, void (*func) (int))) (int);
Establece tratamiento de seales de interrupcin. La funcin signal per-
mite a un proceso elegir uno de los diferentes modos de manipular una seal
de interrupcin del sistema operativo.
signal(SIGINT, SIG_IGN);
Funciones relacionadas: abort, _control87, exit, longjmp, raise,
setjmp.
spawn (funciones) #include <stdio.h>
#include <process.h>
int spawnl(int modo, char *camino, char *arg0, char *arg1,...,NULL);
int spawnle(int modo, char *camino, char *arg0, char *arg1,...,NULL,
char **envp[]);
int spawnlp(int modo, char *camino, char *arg0, char *arg1,...,NULL);
int spawnlpe(int modo, char *camino, char *arg0, char *arg1,...,NULL,
char **envp[]);
int spawnv(int modo, char *camino, char *argv[]);
int spawnve(int modo, char *camino, char /argv[], char *envp[]);
int spawnvp(int modo, char *camino, char *argv[]);
int spawnvpe(int modo, char *camino, char *argv[], char *envp[]);
La familia de funciones spawn crea y ejecuta un nuevo proceso hijo.
Debe haber memoria suficiente para cargar y ejecutar el proceso hijo.
spawnlpe(P_WAIT, hijo.exe, hijo.exe, spawnlpe, buf,
NULL, env);
Funciones relacionadas: exec.
F.9. FUNCIONES DE CONVERSIN DE DATOS
Las funciones de conversin de tipos de datos sirven para crear un puente de
unin entre los dos estilos de representacin de nmeros: la cadena de texto
legible por los humanos y el formato binario legible por las mquinas. Las
funciones de conversin son ideales para convertir argumentos de lneas de
rdenes de su representacin de cadena al formato interno.
atof() #include <math.h>
#include <stdlib.h>
double atof(const char *cadena);
La funcin atof() convierte el argumento cadena en un valor de doble
precisin. La cadena debe tener el siguiente formato:
[blanco][signo][ddd][.]]ddd][exponente][signo][ddd]
opcional e/E
blancos o dgitos decimales
tabulaciones
La conversin termina cuando aparece el primer carcter no reconoci-
ble o cuando se encuentra un carcter nulo (\0).
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 635
double x;
char *cad_dbl = 200-85;
...
x = atof(cad_dbl); // convierte la cadena 200.85
a real
Funciones relacionadas: atoi, atol, ecvt, fcvt, gcvt, scanf,
strtod.
atoi #include <stdlib.h>
int atoi (const char *cadena)
La funcin atoi() convierte el argumento cadena en un valor entero.
La cadena debe tener el siguiente formato:
[espacio en blanco][signo][ddd]
opcional
espacio o tabulacin dgitos decimales
La conversin termina cuando se encuentra un carcter no reconocible
(carcter nulo, \0, punto decimal o una letra). Si no puede convertir la
cadena devuelve nulo.
int i;
char *cad_ent =123;
...
i = atoi(cad_ent);// convierte la cadena 123 al entero 123
Funciones relacionadas: atof, atol, itoa, ltoa, scanf, ultoa.
atol #include <stdlib.h>
long atol(const char *cadena);
Convierte el argumento cadena en un valor entero largo. La cadena debe
tener el formato:
[espacio en blanco][signo][ddd]
opcional
blancos y tabulaciones dgitos decimales
La conversin de caracteres de la cadena hasta que se encuentre el pri-
mer carcter no reconocible o el carcter nulo (\0).
long int i;
char cad_ent = 9876543;
...
i = atol(cad_ent); // convierte cadena 9876543 a entero
// largo.
Funciones relacionadas: atof, atoi, itoa, ltoa, scanf, strtod,
strtol, strtoul, ultoa.
ecvt #include <stdlib.h>
char *ecvt(double valor, int n, int *dec, int *signo);
La funcin ecvt() convierte un argumento de valor doble precisin en
una cadena con n dgitos. Si valor tiene ms de n dgitos, los dgitos infe-
riores se truncan. dec es un puntero a un entero en donde se devuelve la
posicin del punto decimal; signo es un puntero a un entero donde se
devuelve el signo (cero, positivo; en los restantes casos, negativo).
p_buffer = ecvt(valor, exactitud, &dec, &signo);
Funciones relacionadas: atof, fcvt, gcvt, printf, sprintf, itoa,
ltoa, ultoa.
fcvt #include <stdlib.h>
char *fcvt(double valor, int n, int *dec, int *signo);
Al igual que la funcin ecvt, fcvt convierte el argumento valor de
doble precisin en una cadena de n dgitos. Si el nmero de dgitos de valor
excede a n, el exceso de dgitos se trunca. Si hay menos dgitos que n la
cadena se rellena con ceros. fcvt se diferencia de ecvt en el modo de tra-
tar los dgitos significativos. ecvt() busca un nmero total de dgitos,
mientras que fcvt() busca el nmero de dgitos a la derecha del puntero
decimal.
cadena = fcvt(valor, exactitud, %oposicin_d, &signo);
Funciones relacionadas: atof, ecvt, gcvt, itoa, ltoa, printf,
sprintf, ultoa.
636 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
gcvt #include <stdlib.h>
char *gcvt(double valor, int ndig, char, *buf);
La funcin gcvt() convierte el argumento valor de doble precisin en
una cadena de caracteres que se almacena en el buffer cuya direccin se da
en el argumento buf. Se debe asignar bastante espacio en el buffer para con-
tener todos los dgitos de la cadena convertida y el carcter nulo de termi-
nacin (\0).
gcvt(valor, digitos, cadena);
Funciones relacionadas: atof, ecvt, fcvt, itoa, ltoa, printf,
sprintf, ultoa.
itoa #include stdlib.h>
char *itoa(int valor, char *cad, int base);
La funcin itoa() convierte el argumento entero valor en una cadena
de caracteres utilizando el argumento base, como base de un sistema de
numeracin (2 a 36). Debe existir bastante espacio en cad para contener 17
caracteres, itoa() devuelve un puntero a la cadena cad.
itoa(32, buffer, 16); // buffer contendr 20, ya que 32 entero
// equivale a 20 en hexadecimal
Funciones relacionadas: atoi, atol, itoa, ultoa.
ltoa #include <stdlib.h>
char *ltoa(long valor, char * cad, int base);
La funcin ltoa() convierte el argumento entero largo valor en una
cadena de caracteres que utiliza el argumento base como base de un siste-
ma de numeracin. Como un entero largo ocupa 32 bits en base 2, la cade-
na puede ocupar 33 bytes con el carcter nulo de terminacin. Debe haber
bastante espacio para contener 33 bytes. ltoa() devuelve un puntero a cad.
long valor = 99288377L
ltoa(valor, cadena, 30);
Funciones relacionadas: atoi, atol, itoa, ultoa.
strtod #include stdlib.h>
double strtod(const char *cad, char **p);
La funcin strtod() convierte la cadena cad en un valor de doble
precisin. La cadena debe tener el formato
[blanco][signo][ddd][.][exponente][signo][ddd]
+, - d, D, e, E
blanco/ dgitos decimales
tabulacin
strtod() devuelve el valor de doble precisin y cero si no se produce la
conversin. La conversin se termina con el primer carcter no reconocible.
Aplicacin: Convertir la cadena 843899.567 a un valor de coma flo-
tante double.
#include <stdio.h>
#include <stdlib.h>
main()
{
double x;
char *num_flt = 843899.567:
char *p;
x = strtod(num_flt, &p);
printf(x = %f\n,x);
}
Funciones relacionadas: atof, printf, scanf, strtol, strtoul.
strtol #include <stdlib.h>
long strtol(const char *cad, char **p, int b);
La funcin strtol() convierte una cadena cad en un valor entero largo.
La cadena (puede contener hasta 33 caracteres) debe tener el formato:
[espacio en blanco][signo][0][x|X][ddd]
+, - dgitos decimales
hexadecimal
blancos y tabulaciones octal
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 637
La conversin se termina con el primer carcter no reconocible. Si se
produce un error de desbordamiento (positivo o negativo) la variable errno
se establece al valor de la macro ERANGE.
Aplicacin. Convertir la cadena 9876 en valor entero.
#include <stdio.h>
#include <stdlib.h>
main()
{
int base = 10;
long int i;
char *cad_ent = 9876;
char *ptrcad;
i = strtol(cad_ent, &ptrcad, base);
printf(i = %ld\n, i);
}
Funciones relacionadas: atoi, atof, atol, ltoa, strtoul.
strtoul #include <stdlib.h>
unsigned long strtoul(const char *cad, char **p, int base);
Convierte una cadena de caracteres a un entero largo sin signo en la
base dada. La cadena debe tener el formato:
[espacio en blanco][0][x|X][ddd]
dgitos decimales
octal
blanco o tabulaciones hexadecimal
Si la base b es cero, strtoul utiliza el primer carcter de la cadena para
determinar la base del valor.
La cadena cad puede contener hasta 33 caracteres, excluyendo el carc-
ter de terminacin nulo (\0,). Si se produce un error de desbordamiento,
la variable errno se pone al valor de ERANTE.
i = strtoul(cad_ent, &ptrfin, base);
Funciones relacionadas: atol, ultoa, strtol.
ultoa #include <stdlib.h>
char *ultoa(unsigned long valor, char *cad, int base);
La funcin ultoa() toma valor en base b (entre 2 y 36) y lo convierte
en una cadena. Devuelve el puntero al principio de cad. No devuelve cdi-
go de error. cad puede contener hasta 33 caracteres, excluyendo el carcter
de terminacin nulo (\0).
ultoa(valor, buffer, base);
Funciones relacionadas: itoa, ltoa.
F.10. FUNCIONES DE ENTRADA]SALIDA
Las funciones de E/S (Entrada/Salida, I/O, Input/Output) permiten leer y
escribir datos entre archivos y dispositivos. En C no hay estructuras de
archivos predefinidas, todos los datos se tratan como secuencias de bytes.
La lista de funciones de E/S se han agrupado de acuerdo a las tareas espec-
ficas que realizan:
1. Secuencias o flujos (stream).
2. Bajo nivel.
3. Consola y puertos.
Funciones de fIujos (stream)
Las funciones de E/S tratan los datos como una secuencia o flujo de carac-
teres individuales. La eleccin adecuada de las funciones disponibles per-
mite procesar datos en tamaos y formatos diferentes, desde caracteres inde-
pendientes a estructuras de datos complejos. La E/S por secuencia, o flujo,
tambin proporciona acciones de taponamiento (buffering) que mejoran sig-
nificativamente el rendimiento. Para utilizar los flujos, generalmente se
debe incluir el archivo stdio.h.
clearerr #include <stdio.h>
void clearerr(FILE *f);
Reinicializa el indicador de error de un flujo f.
clearerr(fichen);
Funciones relacionadas: eof, feof, ferror, perror.
638 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
fclose, fcloseall #include <stdio.h>
int fclose(FILE *f);
int fcloseall(void);
Cierra un flujo (fclose) o cierra todos los flujos abierta (fcloseall)
excepto stdin, stdout y stderr. Se devuelve el nmero de flujos cerrados
y EOF si se produce un error.
fcloseall();
Funciones relacionadas: close, fdopen, fopen.
fdopen #include <stdio.h>
FILE *fdopen(int handle, char *modo);
Abre un flujo utilizando un handle (entero devuelto por las rutinas de
E/S de bajo nivel, tales como open, creat, dup y dup2); asocia una
estructura de datos FILE con el archivo especificado por handle.
p_datos = fdopen(handle, rb);
Funciones relacionadas: fclose, fopen, fropen, open.
feof #include <stdio.h>
int feof(FILE *flujo);
Comprueba el final de archivo de un flujo.
feof(fichen);
Funciones relacionadas: clearerr, fclose, rewind.
ferror #include <stdio.h>
int ferror(FILE *f);
Verifica si se ha producido un error en un flujo f.
ferror(fichen);
Funciones relacionadas: clarerr, eof, feof, fopen, perror.
fflush #include <stdio.h>
int fflush(FILE *f);
Limpia (vaca) un flujo. Los buffers se limpian automticamente cuan-
do estn llenos, cuando se cierra el flujo, o cuando un programa termina nor-
malmente sin cerrar el flujo.
fflush(fp);
Funciones relacionadas: fclose, flshall, fopen.
fgetc #include <stdio.h>
int fgetc(FILE * f);
Lee un carcter de la posicin actual del archivo y, a continuacin,
incrementa esta posicin.
c = fgetc(fp)
Funciones relacionadas: fgetchar, fputc, fputchar, getc, putc,
putchar.
fgetchar #include <stdio.h>
#int fgetchar(void);
Lee un carcter del archivo stdin, normalmente el teclado.
c = fgetchar();
Funciones relacionadas: fgetc, fputc, fputchar, putc, putchar.
fgetpos #include <stdio.h>
int fgetpos(FILE *flujo, fpos_t *p);
Obtiene y graba la posicin actual del archivo. fos_t es un tipo defini-
do en stdio.h.
fgetpos(fp, &pos_archivo);
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 639
fgets #include <stdio.h>
char *fgets(char *cad, int n, FILE *f);
Lee una cadena de un flujo (hasta que se encuentra \n, o el nmero
mximo de caracteres especificados).
fgets(caddemo,80, fp);
Funciones relacionadas: fputs, gets, puts.
fileno #include <stdio.h>
int fileno(FILE *f);
Obtiene el mando o manejador (handle) del archivo asociado con un
flujo.
fileno(stdin);
Funciones relacionadas: fdopen, fopen.
fopen #include <stdio.h>
FILE *fopen(const char *f, const char *modo);
Abre un archivo f. La cadena de caracteres modo especifica el tipo de
acceso.
Modo Accin
r Abre para lectura.
w Abre un archivo vaco para escritura.
a Abre para escritura al final del archivo (aadir).
r+ Abre para lectura/escritura.
w+ Abre un archivo vaco para lectura/escritura.
a+ Abre para lectura y aadir.
rb Abre un archivo binario para lectura.
wb Crea un archivo binario para escritura.
ab Abre un archivo binario para aadir.
rb Abre un archivo binario para lectura/escritura.
wb Crea un archivo binario para la lectura/escritura.
ab Abre o crea un archivo binario para lectura/escritura.
if ((corriente2 = fopen(datos, W+)) == NULL
printf(el archivo..no se ha abierto \n);
Funciones relacionadas: fclose, fcloseall, fdopen, ferror,
fileno, freopen, open, setmode.
flushall #include stdio.h>
int flushall(void);
Vaca (limpia) todos los buffers asociados con los archivos abiertos.
numvaciados = flushall();
Funciones relacionadas: fclose, fflush.
fprintf #include <stdio.h>
int fprintf(FILE *f, const char *formato[arg,...]);
Imprime datos con formato en un flujo.
fprintf(f1,El resultado es %f\n,result);
Funciones relacionadas: cprintf, fscanf, printf, putc, sprintf.
fputc #include <stdio.h>
int fputc(int c, FILE *f);
Escribe un carcter c en el flujo abierto para salida con buffer.
fputc(*(p++), stdout);
Funciones relacionadas: fgetc, fgetchar, fputchar, getc, get-
char, putc.
fputchar #include <stdio.h>
int fputchar(int c);
640 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
Escribe el carcter c en stdout.
fputchar(q);
Funciones relacionadas: fgetc, fgetchar, gputc, getc, getchar.
fputs #include <stdio.h>
int fputs(const char *cad, FILE *f);
Escribe una letra cad en un flujo f. Devuelve el ltimo carcter impre-
so, si hay error devuelve EOF.
fputs(esto es una prueba, f1);
Funciones relacionadas fgets, gets, puts.
fread #include <stdio.h>
size_t fread(void *p, size_t t, size_t n, FILE *f);
Lee n registros de t bytes en la memoria apuntada por p desde el flujo f.
fread(buf, strlen(msg)+1, 1, flujo);
Funciones relacionadas: fwrite, read.
freopen #include <stdio.h>
FILE *freopen(const char *f, const char *m, FILE *flujo);
Cierra el archivo asociado con flujo y reasigna flujo al archivo espe-
cificado por f. Los modos (m) utilizados son los mismos de fopen.
freopen(salida.txt, w, stdout);
Funciones relacionadas: fclose, fopen.
fscanf #include <stdio.h>
int fscanf(FILE *f, const char *formato [, direccin,...]);
Lee datos con formato de un flujo.
fscanf(flujo, %s%f, cad, &f);
Funciones relacionadas: csanf, fprintf, scanf, sscanf.
fseek #include <stdio.h>
int fseek(FILE *f, long desp, int org);
Mueve el puntero del archivo asociado con f a una nueva posicin que
est desplazada desp bytes de org.
Origen Significado
SEEK_SET Principio de archivo.
SEEK_CUR Posicin actual puntero archivo.
SEK_END Final de archivo.
fseek(f1,OL,SEEK_SET); // ir al principio
Funciones relacionadas: ftell, rewind, fopen.
fsetpos #include <stdio.h>
int fsetpos(FILE *f, const fpos_t *p);
Establece la posicin del puntero del archivo al lugar especificado por
el objeto apuntado por p.
fsetpos(fp, &posarch);
Funciones relacionadas: getpos.
ftell #include <stdio.h>
long int ftell(FILE *f);
Obtiene la posicin actual (puntero) del archivo asociado con el flujo f.
ftell(fichen);
Funciones relacionadas: fgetpos, fssek, tell.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 641
fwrite #include <stdio.h>
size_t fwrite(const void *p, size_t l, size_t n, FILE *f);
Escribe n elementos (registros) de longitud l desde la memoria apunta-
da por p al archivo f. Devuelve el nmero de caracteres realmente escritos
que, si la funcin tiene xito, es igual al nmero indicado.
num = fwrite(lista, sizeof(char),25,flujo);
Funciones relacionadas: fread, fscanf, getc, fgetc.
getc #include <stdio.h>
int getc(FILE *f);
Devuelve el siguiente carcter de un flujo de entrada dado e incremen-
ta la posicin actual del puntero del archivo. Si se alcanza el final de archi-
vo, se devuelve EOF.
whilec(c = getc(fx)!= EOF) {
printf(%c, c);
}
Funciones relacionadas: getchar, fgetc, fputc, fputchr, putc,
putchar, fopen.
getch #include <stdio.h>
int getch(void)
Lee un carcter del teclado sin hacer eco en la pantalla.
do {
car = getch();
char = toupper(car);
} while(car != S);
Funciones relacionadas: cgets, fgetc, getc, getchar, ungetch.
getchar #include <stdio.h>
int getchar(void);
Devuelve el siguiente carcter de stdin. Si se alcanza el final de archi-
vo, se devuelve EOF.
int c;
while((c = getchar())!= \n)
printf(%c, c);
Funciones relacionadas: fgetc, fgetchar, getch, getche, putc,
putchar, ungetc.
getche #include <stdio.h>
int getche(void);
Lee un carcter del teclado haciendo eco del carcter en la pantalla.
resp= getche();
Funciones relacionadas: cgets, getch, getchar, ungetch.
gets #include <stdio.h>
char *gets(char *cad);
Lee una lnea desde el archivo de entrada estndar stdin, por omisin
es el teclado y lo guarda en cad.
gets(nombre);
Funciones relacionadas: fgets, fputs, puts.
getw #include <sdio.h>
int getw(FILE *f);
Lee un entero (o una palabra de dos bytes) de un flujo f.
suma = getw(fx) + suma;
Funciones relacionadas: fread, putw.
642 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
printf #include <stdio.h>
int printf(const char *formato[,argumento,...]);
Escribe cadenas de caracteres y valores de variables, con formato, en el
archivo de salida estndar stdout (por omisin, la pantalla).
Cdigo Formato
%c Carcter.
%d Entero decimal.
%e Real (double o float), notacin cientfica.
%f Coma flotante.
%s Cadena de caracteres.
%x Hexadecimal sin signo.
printf(producto %d y %d es %d\n,x,y, x*y);
Funciones relacionadas: fprintf, scanf, sprintf, viprintf,
vprintf, vsprintf.
putc, putchar #include <stdio.h>
int putc(int c, FILE *f);
int putchar(int c);
Escribe un carcter en un flujo (putc) o en stdout (putchar).
putc(*, demo);
Funciones relacionadas: fputc, fputchar, getc, getchar.
putch #include <stdio.h>
int putch(int c);
Escribe un carcter en la pantalla.
putch(B);
Funciones relacionadas: putc, putchar.
puts #include <stdio.h>
int puts(const char *cad);
Escribe una cadena en el archivo de salida estndar stdout.
puts(Desea continuar(s/n?);
Funciones relacionadas: fgets, fputs, gets.
putw #include <stdio.h>
int putw(int i, FILE *f);
Escribe un entero en un flujo f.
putw(100, fx);
Funciones relacionadas: getw, printf.
rewind #include <stdio.h>
void rewind(FILE *f);
Reinicializa el puntero del archivo al principio de un flujo.
rewind(fx);
Funciones relacionadas: fseek.
scanf #include <stdio.h>
int scanf(const char *formato[,direccin,...]);
Lee datos con formato del flujo de entrada estndar.
Cdigo Formato
%c Carcter.
%d Entero decimal.
%x Hexadecimal.
%i Entero decimal.
%f Nmero real.
%o Octal.
%p Puntero.
%s Cadena.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 643
scanf(%d %f %c %s, &i, &fp, &c, s);
Funciones relacionadas: fscanf, printf, sscanf, vfprintf,
vprintf, vsprintf
setbuf #include <stdio.h>
void setbuf(FILE *f, char *buffer);
Asigna un buffer a un flujo.
setbuf(fx, buffer);
Funciones relacionadas: setvbuf.
setvbuf #include <stdio.h>
int setvbuf(FILE *f, char *b, int t, size_t l);
Asigna el buffer b de tamao l y el tipo t con el flujo (archivo) f. Los
valores correctos de t son: _IOBF, _IONBF e _IOLBF.
setvbuf(demo, buffer, _IOFBF, 120);
Funciones relacionadas: setbuf.
sprintf #include <stdio.h>
int sprintf(char *b, const char *f[,arg,...]);
Escribe datos con formato en una cadena. Se diferencia de printf en
que la salida generada se sita en el array apuntado por b.
sprintf(cad, &s %d %c, uno,5,7);
Funciones relacionadas: sprintf, printf, vprintf, vfprintf,
vsprintf.
sscanf #include <stdio.h>
int sscanf(const char *b, const char *f[,direccin,...]);
Esta funcin es idntica a scanf, excepto que los datos son ledos del
array apuntado por b, en vez de stdin.
sscanf(buffer, %,s%s,uno,dos,tres);
Funciones relacionadas: cscanf, fscanf, scanf, vscanf.
tmpfile #include <stdio.h>
FILE *tmpfile(void);
Crea un archivo temporal y devuelve un puntero a ese flujo.
if((aux = tmpfile()) == NULL)...
Funciones relacionadas: tmpnam.
tmpnam #include <stdio.h>
char *tmpnam(char *s);
Genera un nico nombre de archivo y lo guarda en el array apuntado por s.
tmpnam(prueba);
Funciones relacionadas: tmpfile.
ungetc #include <stdio.h>
int ungetc(int c, FILE *f);
Sita un carcter, excepto la constante EOF, en el buffer asociado con un
archivo abierto para entrada con buffer.
ungetc(car, stdin);
Funciones relacionadas: getc.
ungetch #include <stdio.h>
int ungetch(int ch);
644 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
Empuja un carcter en la memoria intermedia del teclado.
char ch;
ch = getch();
ungetch(ch);
vfprintf, #include <stdio.h>
vprintf, #include <stdarg.h>
vsprintf
int vfprintf(FILE *f, const char *f, lista_va lista_arg);
int vprintf(const char *f, lista_va lista_arg);
int vsprintf(char *b, const char *f, lista_va lista_arg);
Escribe salida con formato utilizando un puntero a una lista de argu-
mentos.
vprintf(formato, nota);
Funciones relacionadas: fprintf, printf, sprintf, va_arg,
va_end, va_strat.
vfscanf #include <stdio.h>
#include <stdarg.h>
int vfscanf(FILE *F, const char *f, lista_va lista_arg);
Lee entrada con formato de un flujo, tal como scanf, excepto que vfs-
canf acepta un puntero a la lista de argumentos.
vfscanf(demo, formato, arg);
Funciones relacionadas: fscanf, scanf, sscanf, vscanf, vsscanf.
vscanf #include <stdio.h>
int vscanf(const char *f, lista_va lista_arg);
Lee una entrada con formato de un flujo; similar a scanf, excepto que
vscanf acepta un puntero a la lista de argumentos.
vscanf(formato, argumento);
Funciones relacionadas: fscanf, scanf, sscanf, fsca.
vsscanf #include <stdio.h>
#include <stdarg.h>
int vsscanf(const char *b, const char *f, lista_va
lista_arg);
Funciona igual que sscanf, excepto que en vsscanf es utilizado un
puntero a una lista de variables en lugar de a las propias variables.
vsscanf(buf_en, formato_p, arg_p);
Funciones relacionadas: fscanf, sscanf, scanf, vfscanf, vscanf.
Funciones de bajo niveI
Las declaraciones de las funciones de bajo nivel se incluyen en los archivos
de cabecera io.h, fcntl.h, sys|types.h y sys|sta.h. A diferencia de
las funciones stream, las funciones de bajo nivel no requieren el archivo de
inclusin stdio.h.
_close, close #include <io.h>
int _close(int h);
int close(int h);
Cierra el archivo especificado en h. Estas funciones se utilizan con
_open y open.
close(f1);
Funciones relacionadas: fclose, fopen, open.
_creat #include <io.h>
creat #include <sys\stat.h>
#include <dos.h>
int creat(const char *cam, int modo);
int _creat(const char *cam, int atributo);
Crea un nuevo archivo o abre y trunca un archivo existente. _creat()
acta igual que creat(), excepto que utiliza un byte de atributo del DOS.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 645
Modo Significado
S_IWRITE Permiso de escritura.
S_IREAD Permiso de lectura.
S_IREAD|S_IWRITE Permiso de lectura y escritura.
fh= creat(datos,S_IREAD|S_IWRITE);
Funciones relacionadas: chmod, close, open umask.
creatnew #include <io.h>
#include <dos.h>
int creatnew(const char *camino, int atributo);
Crea un archivo nuevo con los atributos especificados.
h = creatnew(F.FIL,0);
Funciones relacionadas: _creat, fopen, open.
creattemp #include <io.h>
#include <dos.h>
int creattemp(char *camino, int atributo);
Crea un nico archivo temporal con byte de atributo en el directorio
escrito por camino.
if((h = creattemp(nombre,9))== -1
Funciones relacionadas: tmpfile.
dup, dup2 #include <io.h>
int dup(int h);
int dup2(int h1, int h2);
Crea un segundo enlace a un archivo abierto (dup) o reasigna un enlace
de archivo (dup2).
viejostdout = dup(STDOUT);
dup2(fptr, STDOUT);
Funciones relacionadas: close, creat, open.
eof #include <io.h>
int eof(int d);
Comprueba si el archivo especificado en el descriptor d es el final de
archivo (se devuelve 1 si se alcanza el final del archivo. 0 si no se alcanza
el final del archivo, 1 indica un error y errno toma valor EBADF: nmero
de archivo incorrecto).
while(!eof(fx))
Funciones relacionadas: feof, ferror, perror.
lseek #include <io.h>
#include <stdio.h>
long lseek(int d, long desp, int origen);
La funcin lseek mueve el puntero asociado con el descriptor d a una
nueva posicin que est emplazada desp bytes de origen.
pos = lseek(fh, OL, SEEK_CUR);
Funciones relacionadas: fseek, tell.
open #include <fcntl.h>
#include <io.h>
#include <sys\stat.h>
int open(const char *f, int a[, unisgned m]);
Abre el archivo especificado en f para lectura o escritura. El argumen-
to a indica el tipo de operacin permitida y m el tipo de permiso.
Indicador
Significado
Lectura/escritura
O_RDONLY Abrir para lectura.
O_WRONLY Abrir para escritura.
O_RDWR Abrir para lectura y escritura.
O_NDELAY Pone el puntero del archivo al final del archivo.
O_APPEND Se crea el archivo y se fijan atributos del archivo.
O_TRUNC Trunca el archivo a 0.
O_EXCL Se utiliza con O_CREAT.
O_BINARY Abrir archivo en modo binario.
O_TEXT Abrir archivo en modo texto.
646 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
open(OPEN.OUT, 0_WRONLY|O_CREAT, S_IREAD|IWRITE);
if((h = open(open.tst, O_CREAT))==1)...
Funciones relacionadas: access, chmod, close, creat, fopen.
sopen #include <fcntl.h>
#include <io.h>
#include <share.h>
#include <sys/stat.h>
int sopen(char *f, int a, int s[, int m]);
Abre un archivo f con acceso a en modo compartido en un entorno de
red y con el tipo s de comparticin permitido en el archivo y modo m.
Indicador
Significado
Lectura/escritura
O_RDONLY Abrir para lectura.
O_WRONLY Abrir para escritura.
O_RDWR Abrir para lectura y escritura.
S_IWRITE Acceso de escritura.
S_IREAD Acceso de lectura.
S_IWRITE|S_IREAD Acceso de lectura y escritura.
df = sopen(C:||autoexec.bat, O_RDONLY, SH_DENYRW, S_IREAD);
Funciones relacionadas: close, fopen.
read #include <io.h>
int read (int d, void * buffer, unsigned lon);
Lee lon bytes del archivo asociado con d en el buffer apuntado por
buffer.
read(fx, buffer, 100);
tell #include <io.h>
long tell(int d);
Devuelve la posicin actual del puntero del archivo especificado por d.
posi = tell(desf);
Funciones relacionadas: ftell, lseek.
write #include <io.h>
int write(int d, void *buffer, unsigned lon);
Escribe datos en un archivo (lon bytes en el archivo asociado con d
desde el buffer apuntado por buffer).
write(fx, grande, 60000);
Funciones relacionadas: creat, open, read, sopen.
Funciones de consoIa y puertos de E/S
Las funciones de E/S sirven para interactuar con el teclado y la pantalla.
Estas funciones se declaran en el archivo de cabecera conio.h.
cgets #include <conio.h>
char *cgets(char *cadena);
Lee una cadena de caracteres directamente de la consola, y almacena la
cadena y su longitud en la posicin apuntada por cadena.
entrada = cgets(cadena);
Funciones relacionadas: cputs, getch, getche.
cprintf #include <conio.h>
int cprintf(const char *formato[,arg,...]);
Escribe salida con formato directamente en la consola. Observe que
cprintf no traduce el carcter (\n) a una combinacin (CR-LF), en su lugar,
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 647
\n se interpreta como avance de lnea (LF) y \r se debe utilizar para indicar
un retorno de carro (CR).
cprintf(Cubo de %2d es %rd\r\n,i, i * i * i);
Funciones relacionadas: printf.
cputs #include <conio.h>
int cputs(const char *cad);
Escribe una cadena en la pantalla. No se enva ningn carcter de nueva
lnea despus de la cadena.
cuts(Est usted seguro(s/n)?);
Funciones relacionadas cprintf.
cscanf #include <conio.h>
int cscanf(char *formato [,direccin,...]);
Lee caracteres con formato directamente desde la consola en la posicin
dada por direccin.
cscanf(%d%d%d, &dia, &mes, &hora);
Funciones relacionadas: fscanf, scanf, sscanf.
get, getche #include <conio.h>
int getch(void);
int getche(void);
Lee un carcter de la consola sin eco (getch) o con eco (getche).
printf(Pulse cualquier tecla para salir);
getch();
Funciones relacionadas: cgets, getchar, ungetch.
getpass #include <conio.h>
char *getpass(const char *indicador);
Lee una palabra de paso por consola, que no se visualiza en pantalla
(menos de ocho caracteres de longitud).
palabrapaso = getpass(Introduzca clave);
Funciones relacionadas: getch
inport, inportb #include <dos.h>
int inport(int puerto);
unsigned char inportb(int puerto);
Lee una palabra de 16 bits (inport) o un byte (inportb) de un puerto
de E/S especificado por puerto.
La funcin inport es til para leer dos puertos adyacentes a la vez, e
inportb para controlar dispositivos de entrada/salida.
palabra = inport(PORT_8259_20);
P21 = inportb(PORT_8259_21);
Funciones relacionadas: outport, poutportb.
kbhit #include <conio.h>
int kbhit(void);
Comprueba si se ha pulsado recientemente una tecla.
// visualizar hasta que pulsa una tecla
while(!kbhit())
cputs(Pulse una tecla);
Funciones relacionadas: getch, getche.
outport, outportb #include <conio.h>
void outport(int puerto, int palabra);
void outportb(int puerto, unsigned char byte);
648 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
Escribe una palabra de 16 bits (outport) un byte (outportb) en un
puerto de E/S.
outport(23,0); // 23 fuera del puerto
outport(A, 0) // A fuera de puerto
Funciones relacionadas: inp, inport, inportb, inpw.
putch #include <conio.h>
int putch(int c);
Escribe un carcter en la consola (sin accin del buffer).
putch(car); putch(\n); putch(x);
Funciones relacionadas: getch, getche.
ungetch #include <conio.h>
int ungetch(int c);
Sita un carcter en el buffer del teclado de modo que es el siguiente
carcter ledo en la consola.
if(c =!EOF) ungetch(c);
ungetch(car);
Funciones relacionadas: getch, getche, ungetc.
F.11. FUNCIONES DE GESTIN DE ARCHIVOS
El sistema de archivos es un componente clave del/de la PC. Todas las apli-
caciones y datos residen en archivos. Las funciones de gestin de archivos
permiten establecer y verificar permisos de acceso a archivos. La mayora
de las funciones estn en el archivo de cabecera io.h, y las restantes en
sys|stat.h, dir.h y stdio.h.
access #include <io.h>
int access(const char *nomarch, int modo);
Verifica si existe un archivo y, en caso afirmativo, los permisos de acce-
so al archivo.
Modo Significado
00 Se verifica existencia del archivo.
01 Ejecutar.
02 Verifica permiso de escritura.
04 Verifica permiso de lectura.
06 Verifica permiso de lectura y escritura.
return(access(nombre, 4)==-1)
Funciones relacionadas: chmod, fstat, stat.
chmod #include <stdio.h>
#include <sys\stat.h>
int chmod(const char *camino, int pmodo);
Cambia los permisos de lectura/escritura de un archivo.
r = chmod(prueba.tst, S_IREAD);
Funciones relacionadas: access, fstat, stat.
pmodo Permiso de acceso
S_IWRITE Escritura.
S_IREAD Lectura.
S_IREAD|S_IWRITE Lectura/Escritura.
chsize #include <io.h>
int chsize(int manejador, long longitud);
Cambia el tamao del archivo.
chsize(fh, 5);
Funciones relacionadas: access, chmod, fstat, stat.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 649
filelength #include <io.h>
long filelenght(int manejador);
Obtiene la longitud de un archivo en bytes.
filelength(fh);
Funciones relacionadas: fileno, filestat, stat.
fnmerge #include <dir.h>
void fnmerge(char *camino, const char *unidad,
const char *dir, const char *nombref, const char *ext);
Crea un nombre de camino completo (letra, unidad, camino directorio,
nombre de archivo y extensin del archivo). En Microsoft, la funcin equi-
valente es _makepath.
fnmerge(camino,C:,\\aux,resultado,.dat);
// nombre de caminoC:\aux\resultado.dat
Funciones relacionadas: fnsplit.
fnsplit #include <dir.h>
int fnsplit(const char *camino, char *unidad,
char *dir, char *fnombre, char *ext);
Separa un nombre de camino completo en sus componentes: letra, uni-
dad, camino, nombre y extensin del archivo.
f = fnsplit(c, unidad, dir, arch, ext);
Funciones relacionadas: fnmerge.
fstat #include <sys\stat.h>
int fstat(int h, struct stat *buffer);
Devuelve informacin sobre el archivo especificado en la estructura de
tipo stat apuntada por buffer. La estructura stat es:
struct stat {
short st_dev; // unidad o dispositivo
short st_ino; // nmero inodo (UNIX)
short st_mode // modo archivo
short st_nlink; // nmero enlaces (DOS,1)
int st_uid; // id de usuario (UNIX)
int st_gid; // id de grupo (slo UNIX)
int st_rdev; // dispositivo UNIX
long st_size; // tamao archivo en bytes
long st_atime; // hora ltimo acceso
long st_mtime; // hora ltima (UNIX)
long st_ctime; // hora creacin
};
fstat(fich, &info);
Funciones relacionadas: access, chmod, stat.
isatty #include <io.h>
int isatty(int h);
Determina si es un dispositivo orientado a carcter (terminal, consola,
impresora o puerto serie).
if(isatty(fileno(stdout)))
puts(es consola);
lock #include <io.h>
int lock(int h, long d, long n);
Bloquea un nmero de bytes n del archivo h (manejador) con desplaza-
miento se utiliza para comparticin de archivos (orden SHARE de MS-
DOS). En Visual C++, la funcin equivalente es locking.
res lock(h, 0L,256); bloque de 256 bytes
Funciones relacionadas: sopen, unlock.
650 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
mktemp #include <dir.h>
char * mktemp(char *plantilla);
Crea un nico nombre de archivo modificando una plantilla dada como
argumento, plantilla toma la forma basexxxxxx, donde base es el nom-
bre que se proporciona y x los caracteres a modificar.
char modelo = tcbxxxxxx;
mktemp(modelo);
Funciones relacionadas: tmpfile, tmpnam.
remove #include <stdio.h>
int remove(const char *camino);
Borra el archivo especificado en camino.
remove(C:\\ux\\demo); // borra demo
Funciones relacionadas: unlink.
rename #include <stdio.h>
int rename(const char *vn, const char *nn);
Renombre el archivo vn a nn.
int resultado;
resultado = rename(viejo, nuevo);
Funciones relacionadas: creat, fopen, open.
setmode #include <io.h>
#include <fcntl.h>
int setmode(int h, int modo);
Permite cambiar el modo del archivo abierto entre texto y binario.
modo 0_BINARY(binario) 0_TEXT(texto)
setmode(fileno(stdin), 0_BINARY);
// modo binario
Funciones relacionadas: fopen, open.
stat #include <sys\stat.h>
int stat(char *f, struct stat *buffer);
Obtiene informacin sobre el estado de un archivo existente f.
resultado = stat(stat.c,&buf);
Funciones relacionadas: access, chmod, fstat.
umask #include <io.h>
unsigned umask(unsigned Pmodo);
Establece la mscara de permisos de lectura/escritura usados por open
y create.
Pmodo S_IREAD (slo lectura)
S_IWRITE (slo escritura)
S_IREAD|S_IWRITE (lectura/escritura)
viejamascara = umask(S_IWRITE);
Funciones relacionadas: chmod, creat, mkdir, open, sopen.
unlink #include <dos.h>
#include <io.h>
#include <stdio.h>
int unlink(const char *camino);
Borra un archivo especificado en camino, que no sea de slo lectura.
result = unlink (demo.jnk);
if (result==0)
printf (unlink tuvo xito);
Funciones relacionadas: remove.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 651
unlock #include <conio.h>
int unlock(int h, long o, long l);
Desbloquea una seccin del archivo h que ha sido bloqueada con lock.
unlock(m,OL,256); // desbloquea 256 bytes
Funciones relacionadas: lock, sopen.
F.12. FUNCIONES MATEMTICAS
El C original de K&R fue diseado, inicialmente, como un lenguaje de pro-
gramacin de sistemas, su uso ha sido muy escaso en el campo del clculo
cientfico. Sin embargo, desde la normalizacin de ANSI C y su extensa
biblioteca matemtica, C se ha convertido en un fuerte rival del lenguaje
cientfico por excelencia, FORTRAN. C soporta operaciones de coma flo-
tante e incluye tambin un rico conjunto de funciones matemticas. Borland
C++ ha ampliado las propiedades de ANSI C estndar.
Los archivos de cabecera que contienen funciones matemticas son:
bcd.h, complex.h, float.h, math.h, stdlib.h. Las funciones de Bor-
land C++ no incluidas en ANSI C son: cabs, _clear87, _control87,
_fpreset, hypot, _lrotl, _rotr, _matherr, matherrmax, min,
poly, pow10, random, randomize, _rotl, _rotr, _status87.
Adems de estas funciones, Borland C++ soporta dos clases especficas
importantes: complex y bcd, se encuentran en los archivos complex.h y
bcd.h, respectivamente.
CIase compIex
Borland C++ incluye una estructura complex en el archivo de cabecera
math.h, cuyos miembros son la parte real e imaginaria de un nmero com-
plejo z y que se define as:
struct complex
{
double x; // parte real del nmero complejo
double y; // parte imaginaria del complejo
}
Se puede declarar e inicializar un nmero complejo (x + yi) de esta
forma:
struct complex z = {1.5,1.5} // z = 1.5 + i1.5;
Las funciones complejas son propias de Borland C++ y no son expor-
tables.
CIase bcd
La clase bcd permite manipular nmeros almacenados en notacin decimal
codificado a binario (BCD) y proporciona hasta 17 dgitos decimales de
precisin, y un rango de 1 10
-125
a 1 10
125
.
abs versin real #include <math.h>
#include <stdlib.h>
versin compleja #include <complex.h>
int abs (int x);
double abs(complex x);
Proporciona el valor absoluto de un entero o de un nmero complejo:
abs(-50) devuelve 50. Para utilizar nmeros complejos se requiere el
archivo de cabecera complex.h.
x = abs(-7) // x es 7
Funciones relacionadas: cabs, fabs, labs.
acos #include <math.h>
#include <complex.h>
double acos(double x);
complex acos(complex x);
La funcin acos() devuelve el arco coseno de x, cuyo valor debe estar
en el rango 1 a 1. El resultado es un valor (ngulo) entre 0 y radianes.
angulo = acos(0.5); // el ngulo devuelto es /3
Funciones relacionadas: cos, matherr.
arg #include <complex.h>
double arg(complex x);
652 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
La funcin arg() devuelve el ngulo, en radianes, de un nmero en el
plano complejo.
complex z;
double angulo;
z = complex(1.5, 4.5);
angulo = arg(z);
Funciones relacionadas: complex, norm, polar.
asin versin real #include <math.h>
versin compleja #include <complex.h>
double asin(double x);
Calcula el arco seno del argumento x; el valor de x debe estar com-
prendido entre 1 y 1. La funcin asin() devuelve un valor entre /2 y ,
el valor de x debe ser en radianes.
Z = asin(0.7543);
Funciones relacionadas: matherr, sin.
atan versin real #include <math.h>
versin compleja #include <complex.h>
double atan(double x);
Calcula el arco tangente de x. El rango x es 1 a 1. La funcin atan()
devuelve un valor en el rango de /2 a /2.
#include <complex.h>
complex atan(complex x);
angulo = atan(1.0); // ngulo es Pi/4 (45 grados)
Funciones relacionadas: atan2.
atan2 #include <math.h>
double atan2 (double y, double x);
Calcula el arco tangente de y/x. El resultado es un ngulo de valor
comprendido entre y radianes.
angulo = atan2(y, x);
Funciones relacionadas: atan, matherr, tan.
cabs #include <math.h>
double babs(struct complex z);
Calcula el valor absoluto de un nmero complejo almacenado en una
estructura de tipo complex.
struct complex z;
double complejo;
z.y = 3.5
z.y = 2.4
complejo = cabs(z);
printf(valor absoluto %lf\n, complejo);
Funciones relacionadas: fabs, hypot, matherr, sqrt.
ceil #include <math.h>
double ceil (double x);
Calcula (redondea) el nmero entero mayor que o igual a x.
redondeo = ceil(5.1) // redondeo es 6
Funciones relacionadas: floor.
_clear87 #include <float.h>
unsigned int _clear87(void);
Borra (limpia) la palabra del estado de coma flotante.
estado = _clear87();
Funciones relacionadas: _control87, _status87.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 653
_control87 #include <float.h>
unsigned int _control87(unsigned int nuevo, unsigned int
mascara);
Obtiene y establece la palabra de control de coma flotante. Cuando se
utiliza un coprocesador matemtico 8087, _control87 establece su palabra
de control.
estado = control87(PC24,MCW_IC);
// precisin 24 bits
Funciones relacionadas: _clear87, _status87.
cos #include <math.h>
double cos(double x);
complex cos(complex x);
Calcula el coseno del argumento x. El argumento x se especifica en
radianes y devuelve un valor en el rango de 1 a 1.
coseno_x = cos(1.6543);
Funciones relacionadas: acos, sin.
cosh #include <math.h>
double cosh(double x);
complex cosh(complex x);
Calcula el coseno hiperblico de la variable x. Si el argumento pasado
a cosh() es demasiado grande, se produce un error de rango.
x = 1.00
printf(x = %f.\n\n,x);
y = cosh(x);
printf(coseno hiperblico x = %f.\n\n, y);
Funciones relacionadas: sinh.
div #include <stdlib.h>
div_t div(int x, int y);
La funcin div() calcula el cociente entero y el resto de x por y. La
funcin devuelve una estructura div_t definida en stdlib.h como
typedef struct
{
int quot; // cociente
int rem; // resto
} div_t;
div_t resultado;
resultado = div(35, 8);
// resultado.cociente = 4, resultado.resto = 3
exp #include <amth.h>
#include <complex.h>
double exp(double x);
complex exp(complex x);
Calcula el exponencial de x:e
x
; donde e es la base del logaritmo natu-
ral (e = 2.7182818).
x = 100.00;
y = exp(x);
printf(El exponencial de x = %f.\n,y);
Funciones relacionadas: log, pow.
fabs, fabsl #include <math.h>
double fabs(double x);
long double fabs(long double x);
Calcula el valor absoluto de un nmero en coma flotante x.
y = fabs(-7.25); // y vale 7.25
Funciones relacionadas: cabs.
floor #include <math.h>
double floor(double x);
654 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
Redondea por defecto el valor de x.
x = floor(6.25); // x vale 6
Funciones relacionadas: ceil.
fmod #include <math.h>
double fmod(double x, double y);
Calcula el resto de la divisin real x por y.
resto = (fmod(5.0, 2.0); // resto igual a 1.0
Funciones relacionadas: floor.
_fpreset #include <float.h>
void _fpreset(void);
Reinicializa el paquete matemtico de coma flotante. Debe utilizarse
despus de las llamadas a las funciones system(), exec(), span() sobre
mquinas con coprocesadores matemticos.
_fpreset(); // inicializa paquete de coma flotante *t
Funciones relacionadas: _control87, signal.
frexp(), frexpl() #include <math.h>
double frexp(double x, int *exp);
long double frexpl(long double x, int *exp);
La funcin frexp descompone el valor x en una mantisa (m) y en un
exponente n, tal que el valor absoluto de m es mayor o igual a 0,5 y menor
que 1,0 y x + m*2
n
. La mantisa se obtiene por la funcin, y el exponente se
almacena en la variable apuntada por exp.frexpl descompone un valor
long double.
double x, y;
int n;
x = 17.5;
y = frexp(x, &n);
printf(frexp(%f, &n) = %f, n = %d\n,x,y,n);
Funciones relacionadas: exp, ldexp, modf.
hypot #include <math.h>
double hypot(double x, double y);
Calcula la hipotenusa de un tringulo rectngulo cuyos lados son x e y.
Una llamada a hypot equivale a lo siguiente:
sqrt(x * x, y * y);
double x = 3.0; y = 4.0;
printf(%lf, hypot(x, y));
imag #include <complex.h>
double imag(complex x);
Devuelve la parte imaginaria de un nmero complejo x. Esta funcin no
es transportable.
double x = 3.4, y = 4.5;
complex = complex(x, y);
cout << parte imaginaria: << imag(z) << \;
Funciones imaginarias: complex, conj, real.
labs #include <math.h>
long int labs(long int n);
Calcula el valor absoluto de un entero largo (n).
long lx = 51654L, ly;
ly = labs(lx);
Funciones relacionadas: abs, cabs, fabs.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 655
ldesp, ldespl #include <math.h>
double ldesp(double x, int exp);
long double ldexpl(long double x, int exp);
Calcula y devuelve el valor real de x*e
exp
.
double x = 4.0,y;
int p = 5;
y = ldexp(x, p);
Funciones relacionadas: frexp, modf.
ldiv #inxlude <stdlib.h>
ldiv_t ldiv(long int x, long int y);
Calcula el cociente y el resto de la divisin x/y. La funcin ldiv
devuelve una estructura de tipo ldiv_t que comprende el cociente y el
resto.
typedef struct
{
long quot;
long rem;
} ldiv_t;
long x = 5258625, y = 341654;
ldiv_t resultado;
resultado = ldiv(x, y);
printf(el cociente y el resto es %ld, %ld,\n, resultado.quot,
resultado.rem);
Funciones relacionadas: div.
log, log10 #include <math.h>
#include <complex.h>
double log(double x);
double log10(double x);
Calcula el logaritmo natural (neperiano) y el logaritmo en base 10 de x.
Si x es negativo, ambas funciones devuelven un error de dominio DOMAIN en
stderr, la variable global errno toma el valor EDOM y devuelve el valor
HUGE_VAL. Si x es 0, la funcin imprime un mensaje de error SING en
stderr, devuelve el valor HUGE_VAL y fija errno a ERANGE.
hdouble x, y;
x = 10;
y = log(x);
y = log10(x);
Funciones relacionadas: exp, matherr pow.
_lrotl #include <stdlib.h>
unsigned long _lrotl(unsigned long x, int c);
Se utiliza _lrotl para rotar a la izquierda los bits de una variable ente-
ra larga sin signo x. La rotacin de un bit a la izquierda, una posicin, sig-
nifica que el bit ms a la izquierda sale fuera y se inserta en su posicin el
siguiente bit de mayor peso, y los restantes bits se desplazan una posicin a
la izquierda.
unsigned long x = 0x0fac45491;
printf(x desplazado 4 veces es, _lrotl (x, 4);
Funciones relacionadas: _lrotr, _rotl, _rotv.
_lrotr #include <stdlib.h>
unsigned long _lrotr(unsigned long x, int c);
Rota a la derecha los bits de x. Rotacin a derecha de un bit significa
salir fuera el bit de menor peso y los restantes se desplazan una posicin a
la derecha.
val_r = _lrotr(x, 4);
Funciones relacionadas: _lrotl, _rotl, _rotr.
matherr #include <math.h>
_matherrl
int matherr(struct exception *e);
int _matherrl(struct _exception1 *e)
656 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
Esta funcin manipula errores matemticos. Las funciones matemticas
llaman a la rutina adecuada matherr cuando se detecta un error. Se puede
desarrollar su propia versin de matherr para personalizar su tratamiento
de errores. Para profundizar en esta funcin, consultar su referencia en
Library Reference de Borland C++ (pgs. 352-353).
Funciones relacionadas: Las funciones matemticas.
max #include <conio.h>
(tipo) max(a, b);
Devuelve el mayor de dos valores. Ambos argumentos y la declaracin
de la funcin deben ser del mismo tipo.
double dbl1, dbl2, dblmax;
dblmax = max(dbl1, dbl2);
Funciones relacionadas: min.
min #include <stdlib.h>
(tipo) min(a, b);
Devuelve el menor de dos valores. Ambos argumentos y la declaracin
de la funcin deben ser del mismo tipo.
int i1, i2, minent;
minent = min(i1, i2);
Funciones relacionadas: max.
modf, modfl #include <math.h>
double modf(double x, double *partent);
long double modfl(long double x, long double *partent);
La funcin modf divide un nmero de coma flotante en dos partes, ente-
ra y decimal. La parte entera de x se almacena en la posicin a cuya direc-
cin apunta partent, y la parte decimal es devuelta por la funcin.
pardecimal = modf(36.95, &parte_entera(;
// parte entera 36, parte decimal .95
Funciones relacionadas: frexp,ldexp.
polar #include <complex.h>
complex polar(double modulo, double angulo);
Devuelve un nmero complejo con una magnitud (mdulo) y ngulo
dado.
complex < = complex(x, y);
polar(mag, ang)es lo mismo que complex(mag*cos(ang), mag
*sin(ang);
Funciones relacionadas: Slo existe en C+.
poly #include <math.h>
double poly(double x, int n, double c[]);
Se utiliza poly para evaluar un polinomio en x, de grado n y cuyos coe-
ficientes son los correspondientes al array c. La expresin utilizada para
evaluar el polinomio es:
c[n]x
n
+c[n-1]
n-1
+...+c[2](x
2
+c[1](x+c[0]
// polinomio: 3x**2 + 2x + 1//
double c[] = {-10.0,2,c);
Funciones relacionadas: pow.
rand #include <stdlib.h>
int rand(void);
Genera un nmero pseudoaleatorio en el rango de 0 a RAND_MAX; esta
constante simblica est definida en <stdlib.h> y su valor es 2
15
-1. Para ini-
cializar el generador de nmeros pseudoaleatorios se debe utilizar randomize.
Para obtener un nmero en el rango de 0 a (n-1) hay que utilizar random.
// visualizar 10 nmeros aleatorios //
for(i = 0; 1 < 10; i++)
printf(%6d\, rand());
Funciones relacionadas: random, randomize, srand.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 657
random #include <stdlib.h>
int random(int x);
Genera un nmero pseudoaleatorio en el rango de 0 a x-1.
// obtener un nmero aleatorio entre 0 y 20
numa1 = random(21);
Funciones relacionadas: rand, randomize.
randomize #include <stdlib.h>
#include <time.h>
void randomize(void);
Inicializa (genera una semilla) el generador de nmeros pseudoaleato-
rios con una semilla aleatoria que es funcin de la hora actual. Esta funcin
impide que se repitan las mismas secuencias de nmeros aleatorios en dife-
rentes ejecuciones.
randomize();
Funciones relacionadas: rand, random, srand.
real #include <complex.h>
#include <bcdh.h>
double real(complex x);
double real(bcd x);
Devuelve la parte real de un nmero complejo x o convierte un nmero
BCD a float, double o long double.
complex z = complex(x, y)
cout << parte real: << real(z) << \n;
Funciones relacionadas: Funcin exclusiva de C++.
_rotl #include <stdlib.h>
unsigned _ rotl(unsigned x, int c);
Rota el valor de x,c bits a la izquierda.
modelo_nuevo = _rotl(0x1234,8);
// resultado es 3412h
Funciones relacionadas: _lrotl, _rotr, _rotr.
_rotr #include <stdlib.h>
unsigned _rotr(unsigned x, int c);
Se utiliza _rotr para rotar a la derecha el valor de x,c bits.
_rotr(val, 4);
Funciones relacionadas: _lrotl, _lrotr, _rotl.
sin #include <math.h>
#include <complex.h>
double sin(double x);
complex sin(complex x);
La funcin sin() proporciona el seno de x (se supone en radianes).
double x, y;
x = 0.52;
printf(x = %f radianes\n, x);
y = sin(x)
printf(el seno de x = %f\n, y);
Funciones relacionadas: asin, cos, sinh.
sinh #include <math.h>
#include <complex.h>
double sinh(double x);
complex sinh(complex x);
Devuelve el seno hiperblico de x (x, se supone en radianes).
y = sinh(x);
Funciones relacionadas: sin, cosh.
658 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
sqrt #include <math.h>
double sqrt(double x);
complex sqrt(complex x);
Calcula la raz cuadrada de un nmero x no negativo.
printf(%lf,sqrt(25.0); // se visualiza 5
Funciones relacionadas: exp, log, pow.
srand #include <stdlib.h>
void srand(unsigned x);
srand inicializa el generador de nmeros aleatorios con la semilla x. Si
x es 1, el generador se reinicializa; cualquier otro valor de x fija el genera-
dor a un punto inicial aleatorio.
srand(semilla);
Funciones relacionadas: rand, randomize.
_status87 #include <float.h>
unsigned int _status87(void);
Obtiene el contenido de la palabra de estado de coma flotante.
estado = _status87();
Funciones relacionadas: _clear87, _control87.
tan #include <math.h>
#include <complex.h>
double tan(double x);
complex tan(complex x);
Calcula la tangente de x (x, se supone en radianes).
y = tan(x)
Funciones relacionadas: atan.
tanh #include <math.h>
#include <complex.h>
double tanh(double x);
complex tanh(complex x);
Calcula la tangente hiperblica de x.
a = tanh(x);
Funciones relacionadas: cosh, tanh.
F.13. FUNCIONES DE MANIPULACIN DE BLOOUES
DE MEMORIA (BUFFERS)
Las rutinas de manipulacin de buffers son una forma general de las rutinas
de manipulacin de cadenas que operan sobre stas en C. Son tiles para tra-
bajar con reas de memoria sobre la base de carcter a carcter. Un buffer es
un array de caracteres similar a una cadena de caracteres. Sin embargo, al
contrario que las cadenas, los buffers no terminan normalmente con un
carcter nulo (\0). Por consiguiente, las rutinas de manipulacin de buf-
fers siempre toman un argumento longitud o cuenta.
Las rutinas de manipulacin requieren que el archivo de cabecera
<mem.h> se incluya en su programa.
memccpy #include <mem.h>
#include <string.h>
void *memccpy(void *dest, const void *s, int c, size_t n);
Copia n bytes desde s a dest hasta que n bytes han sido copiados o c
se copia a dest.
res = memccpy(buf_dest, bufen, c, 81);
Funciones relacionadas: memcpy, memmove, movedata, movmem.
memchr #include <mem.h>
#include <string.h>
void *memchr(const void *buf, int c, size_t n);
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 659
Busca un carcter especfico c en un buffer (buf) examinando los n pri-
meros caracteres.
result = memchr(direc, I, 40);
Funciones relacionadas: memcmp, memicmp.
memcmp #include <mem.h>
int memcmp(const void *b1, const void *b2, size_t n);
Compara n bytes de un buffer (b1) con los de otro buffer (b2). Devuel-
ve un valor:
< 0 si b1 < b2
= 0 si b1 = b2
> 0 si b1 > b2
resultado = memcmp(buf1, buf2, sizeof(buf1));
Funciones relacionadas: memicmp.
memcpy #include
void *memcpy(void *dest, const void *fuente, size_t n);
Copia n bytes de fuente en dest. Devuelve un puntero a dest.
memcpy(dest, fuente, 80):
Funciones relacionadas: memccpy, memmove, movedata.
memicmp #include <mem.h>
#include <string.h>
int memicmp (const void *b1, const void *b2, size_t n);
Compara un nmero de bytes de un buffer (b1) con otro (b2) sin hacer
caso del tamao de las letras en los dos buffers.
if(memicmp(buf1, buf2, 15) == 0)
puts(Los buffers son iguales en los 15 primeros bytes \n);
Funciones relacionadas: memcmp.
memmove #include <string.h>
#include <mem.h>
void *memmove(void *dest, const void *f, size_t n);
Mueve n bytes de un buffer (f) a otro (dest).
Funciones relacionadas: memccpy, memcpy, movedata.
memset #include <string.h>
void *memset(void *s, int c, size_t n);
Fija los n primeros bytes del array s al carcter c.
resultado = memset(buffer,1, 50);
Funciones relacionadas: memccpy, memcpy, memmove, movemem, setmem.
movedata #include <mem.h>
#include <string.h>
void movedata (unsigned ss, unsigned so,
unsigned ds, unsigned do, size_t n);
Mueve n bytes desde ss a ds, donde ss es el segmento fuente, so es el
desplazamiento fuente, ds es el segmento destino, do es el desplazamiento
destino y n es el nmero de bytes que hay que mover.
movedata(seg1, off, seg2, dest_off, 4096);
Funciones relacionadas: memcpy, memmove, movmem, segread.
movmem #include <mem.h>
void movmem(void *fuente, void *destino, unsigned n);
Copia n bytes de fuente a destino.
movmem(&fuente[6], fuente, sizeof(fuente));
Funciones relacionadas: memmove.
660 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
setmem #include <mem.h>
void setmem(void *dest, unsigned long, char c);
Fija un bloque de long bytes en el buffer dest al carcter c. setmem es
til para inicializar buffers.
setmem(buffer, 60, t);
Funciones relacionadas: memset.
swab #include <stdlib.h>
void swab(char *fuente, char *destino, int n);
Copia un nmero par de bytes de una posicin a otra, intercambiando al
mismo tiempo cada par de bytes adyacentes.
swab(mnpq, resultado, 4);
// resultado es nmpq
Funciones relacionadas: Slo est disponible en sistemas UNIX.
F.14. FUNCIONES DE PRESENTACIN DE TEXTO
Las funciones de presentacin de texto permiten definir coordenadas de una
ventana de texto en la pantalla y manipular texto. Con estas funciones se
puede posicionar texto en cualquier parte de la pantalla, seleccionar atribu-
tos de texto (tales como subrayado, vdeo inverso, parpadeo, colores de
fondo y primer plano), as como actuar sobre ventanas de texto. Estas fun-
ciones se encuentran esencialmente en el archivo de cabecera conio.h.
clreol #include <conio.h>
void clreol(void);
Borra la lnea actual desde la posicin del cursor al final de la lnea.
clreol()
Funciones relacionadas: clrscr, delline, textbackground, window.
clrscr #include <conio.h>
void (clrscr(void);
Borra la ventana actual y pone el cursor en la esquina superior izquier-
da (1,1).
clrscr();
Funciones relacionadas: clreol, textbackground, window.
delline #include <conio.h>
void delline(void);
Borra la lnea completa que contiene el cursor y desplaza hacia arriba
las lneas que haya debajo.
delline();
Funciones relacionadas: clreol, clrscr.
gettext #include <conio.h>
int gettext(int izda, int arriba, int derecha, int abajo,
void *textbuf);
Copia el contenido de un rea rectangular de la pantalla al buffer cuya
direccin se da en el argumento textbuf. Todas las coordenadas son abso-
lutas.
if(!gettext(1,1,30,20, pan_grabada))
puts(color);
Funciones relacionadas: movetext, puttext.
gettextinfo #include <conio.h>
void gettextinfo(struct text_info *r);
Devuelve informacin relativa a las coordenadas de la ventana actual,
posicin del cursor dentro de la ventana, atributo del texto, las dimensiones
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 661
de la pantalla y el modo de texto actual. La informacin se devuelve en una
estructura text_info.
struct text_info {
unsigned char winleft; // coordenadas x, y esquina superior
// izquierda
unsigned char wintop; // ventana actual
unsigned char winright; // coordenadas x, y esquina inferior
// derecha
unsigned char winbottom; // ventana actual
unsigned char attribute; // atributo texto actual
unsigned char normattr; // atributo texto normal
unsigned char currmode; // modo texto actual
unsigned char screenheight;// altura de la pantalla
unsigned char screenwidth; // anchura pantalla
unsigned char curx; // coordenada x cursor
unsigned char cury; // coordenada y cursor
};
gotoxy #include <conio.h>
void gotoxy(int x, int y);
Mueve el cursor a una posicin especificada (columna x, fila y) dentro
de la ventana de texto actual.
gotoxy(15, 4);
Funciones relacionadas: wherex, wherey, window.
highvideo #include <conio.h>
void highvideo(void);
Activa caracteres de alta intensidad.
highvideo();
Funciones relacionadas: lowvideo, normvideo, textcolor.
insline #include <conio.h>
void insline(void);
Inserta una lnea en blanco en la ventana de texto actual en la posicin
del cursor, desplazando el resto de las lneas situadas debajo.
insline();
Funciones relacionadas: clreol, delline, window.
lowvideo #include <conio.h>
void lowvideo(void);
Activa los caracteres a baja intensidad.
lowvideo();
Funciones relacionadas: highvideo, normvideo, textcolor.
movetext #include <conio.h>
iont movetext(int izda, int arriba, int dcha,
int abajo, int nuevoizda, int nuevoarriba);
Copia el contenido de una zona rectangular de la pantalla (en modo
texto) a otro rectngulo en la pantalla de las mismas dimensiones.
if (!movetext(1, 1, 30, 20, 40, 40))
puts(victoria);
Funciones relacionadas: gettext, puttext.
normvideo #include <conio.h>
void normvideo(void);
Reinicializa los atributos de texto al valor que tenan antes de que arran-
que el programa.
normvideo();
Funciones relacionadas: highvideo, lowvideo, textattr, textco-
lor.
662 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS
puttext #include <conio.h>
int puttext(int izda, int arriba, int dcha, int abajo,
void *textbuf);
Copia el contenido de un buffer en una zona rectangular de la pantalla
en modo texto.
puttext(3, 1, 32, 22, buffertexto);
Funciones relacionadas: gettext, movetext.
_setcursortype #include <conio.h>
void setcursortype(int estilo_cursor);
Cambia la forma del cursor en modo texto. El argumento tiene que ser
una de las constantes.
_NOCURSOR Desactiva el cursor.
_SOLIDCURSOR Un carcter bloque slido es el cursor.
_NORMALCURSOR Un subrayado parpadeante es el cursor.
setcursortype(_SOLIDCURSOR);
Funciones relacionadas: cprintf, cputs.
textattr #include <conio.h>
void textattr(int atrib);
Fija el atributo de texto a atrib. Se utiliza para controlar la apariencia
del texto en la pantalla.
textattr(YELLOW + (RED << 4));
textattr(10110100);
Funciones relacionadas: gettextinfo, highvideo, lowvideo, norm-
video, textbackground, textcolor.
textbackground #include <conio.h>
void textbackground(int colorfondo);
Establece el color de fondo para texto vidualizado.
textbackground(2);
textcolor #include <conio.h>
void textcolor(int colorprimerplano);
Establece el color del primer plano del texto visualizado por cprintf y
cputs. El argumento puede tomar un valor entre 0 BLACK (negro) y 15
WHITE (blanco).
textcolor(15);t
Funciones relacionadas: textattr, textbackground.
texmode #include <conio.h>
void textmode(int nuevomodo);
Conmuta al modo texto especificado por el argumento nuevomodo.
-1 LASTMODE ltimo modo de texto.
0 BW40 Monocromo 40 columnas.
1 C40 Color 40 columnas.
2 BW80 Monocromo 80 columnas.
3 C80 Color 80 columnas.
7 MONO Monocromo 80 columnas.
64 C4350 EGA 43 filas o VGA 50 filas.
textmode(C40);
Funciones relacionadas: gettextinfo, restorecrtmode.
BIBLIOTECA DE FUNCIONES ESTNDAR ANSI]ISO C++ Y BORLAND C++ 5.0 663
wherex #include <conio.h>
wherey
int wherex(void);
int wherey(void);
Determina la coordenada x (wherex) y la coordenada y (wherey) de la
posicin del cursor en la ventana actual.
xpos = where(x); ypos = where(y);
window #include <conio.h>
void window(int izda, int arriba, int dcha, int abajo);
Define una regin rectangular de la pantalla como la ventana de texto
actual esquina superior izquierda (izda, arriba) y esquina inferior dere-
cha (dcha, abajo).
window(15, 5, 54, 14);
// ventana de 40 x 10 con origen en (15, 5)
Funciones relacionadas: gettextinfo, textmode.
664 PROGRAMACIN EN C++. ALGORITMOS, ESTRUCTURAS Y OBJETOS

También podría gustarte