Documentos de Académico
Documentos de Profesional
Documentos de Cultura
F.8.
F.9.
F.10.
F.11.
F.12.
F.13.
F.14.
F.2.
Borland C++ almacena informacin en la memoria principal de la computadora 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 informacin 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
F.1.
strrev
nombre funcin
archivo de cabecera
#include <string.h>
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.
616
memoria para colas diferentes en un tiempo distinto. Este proceso de asignar 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 cdigo 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 argumentos) y montn o montculo heap.
#include <stdlib.h>
#include <alloc.h>
Segmento de datos
int *calloc(size_t n, size_t s);
Montculo
(heap)
Pila
(stack)
#include <dos.h>
La funcin allocmen() establece seg para apuntar a un segmento asignado 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);
#include <alloc.h>
unsigned coreleft(void)
// modelos small, tiny, medium
unsigned long coreleft(void); // en otros modelos de memoria
#include <alloc.h>
#include <alloc.h>
void far *farcalloc(unsigned long n, unsigned long s);
617
#include <alloc.h>
#include <alloc.h>
estadoheap = farheapchecknode(arraygrande);
memoria_total_disponible = farcoreleft();
farheapfillfree
#include <alloc.h>
#include <alloc.h>
Rellena todos los bloques libres del montculo far con un valor constante.
estadoheap = farheapfillfree(X);
farheapwalk
#include <alloc.h>
#include <alloc.h>
int farheapcheck(void);
estadoheap = farheapcheck();
farmalloc
farheapcheckfree
#include <alloc.h>
#include <alloc.h>
618
farrealloc
#include <alloc.h>
heapcheckfree
#include <alloc.h>
#include<alloc.h>
#include <stdlib.h>
#include <alloc.h>
estadopila = heapchecknode(array);
char *cad;
// asignar memoria para cadena
cad = (char *) malloc(50);
heapfillfree
#include <alloc.h>
heapcheck
#include <alloc.h>
int heapcheck(void);
free, heapwalk.
Verifica la consistencia del montculo (heap). En Visual C++ 6.0 la funcin equivalente es _heapcheck();
heapwalk
estadoheap = heapcheck();
#include <alloc.h>
struct heapinfo i;
estadoheap = heapwalk(&i);
setblock
int
619
#include <alloc.h>
#include <stdlib.h>
#include <alloc.h>
F.3.
void
#include <alloc.h>
#include <stdlib.h>
sbrk
#include <alloc.h>
#include <stdlib.h>
La funcin bsearch realiza una bsqueda binaria en un array ordenado b, de n elementos, cada uno de a bytes de tamao. El argumento k apunta 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 elemento del array. La funcin comparar compara cada uno de los elementos apuntados y devuelve un valor de acuerdo con la tabla siguiente:
Valor devuelto
Condicin
Negativo
Cero
Positivo
sbr(500);
620
lfind
#include <stdlib.h>
#include <stdlib.h>
Condicin
Negativo
Cero
Positivo
void * lsearch(const void *k, const void *a, size_t *n, size_t W,
int(*comparar) (const void*, const void *));
Valor devuelto
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)
}
#include <stdlib.h>
F.4.
FUNCIONES DE CADENA
strchr
621
#include <string.h>
visualizar $85725
char *s[81] = Esta es una cadena de prueba;
char *ptr;
ptr = strchr(s, a);
#include <string.h>
strcmp
#include <string.h>
#include <string.h>
i = strcmp(MNP, mnp);
i = strcmp(abc, abc);
i = strcmp(xy, abc);
// resultado < 0
// resultado = 0
// resultado > 0
strcmpi
#include <string.h>
Compara una cadena con otra sin diferenciar entre maysculas y minsculas y devuelve un entero:
622
v = strcmpi(c1, c2);
#include <string.h>
#include <string.h>
strcpy()
#include <string.h>
#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;
}
#include <string.h>
#include <string.h>
strerror
#include <string.h>
#include stdio.h
strlwr
char
623
#include <string.h>
*strlwr(char *cad);
stricmp
#include <string.h>
strncat
#include <string.h>
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 respecto a cad2.
Si cad1 = cad2
Si cad1 < cad2
Si cad1 > cad2
#include <strign.h>
Proporciona la longitud de una cadena cad. El carcter nulo no se incluye 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));
#include <string.h>
624
Encuentra la ltima aparicin del carcter c en cad. Devuelve un punteo a la ltima aparicin de c o un carcter nulo si c no est en cad.
nicmp.
#include <string.h>
strrev
strpbrk
#include <string.h>
#include <string.h>
strset
#include <string.h>
strrchr
char *strrchr(const char *cad, int c);
#include <string.h>
strspn
#include <string.h>
625
strupr(sierra madre);
// SIERRA MADRE
#include <string.h>
#include <string.h>
#include <string.h>
F.5.
FUNCIONES DE CLASIFICACIN
DE CARACTERES
Rompe una cadena en subcadenas (token) utilizando una lista de separadores. Devuelve un puntero a la subcadena actual y un NULL cuando se
alcanza el final de la cadena.
char
char
cout
cout
*s
*t
<<
<<
strupr
char *strupr(char *cad);
#include <string.h>
C utiliza el conjunto de caracteres ASCII. Con frecuencia se necesita determinar 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.
626
iscntrl, isdigit
isgraph, islower
isprint, ispunct, isspace
isupper,isxdigit
isalnum
int
int
int
int
int
int
int
int
int
#include <ctype.h>
La funcin isalnum() devuelve un cero si c es un carcter no alfanumrico 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);
#include <ctype.h>
#include <ctype.h>
iscntrl(int c);
isdigit(int c);
isgraph(int c);
islower(int c);
isprint(int c);
ispunct(int c);
isspace(int c);
isupper(int c);
isxdigit(int c);
Macro
Verifica
iscntrl
isdigit
isgraph
islower
isprint
ispunct
Carcter de control.
Dgito decimal.
Carcter imprimible (sin espacio).
Carcter minscula.
Carcter imprimible
Carcter puntuacin
isspace
isupper
isxdigit
Carcter blanco.
Carcter mayscula.
Dgito hexadecimal.
0..1Fh, 7Fh
0..9
21h a 7Eh
a..z
20h..7Eh
21h..2Fh, 3Ah..40h,
5Bh..60h, 7Bh..7Eh
9h..Dh 0 20h (blanco)
A..Z
0..9
A..F
a.. f
#include ctype.h>
carac = getch();
if(isascii(carac))
printf(%c es ASCII \n, carac);
else
printf(%c no es ASCII \n, carac);
if(isprint(c))
if(iscntrl(c))
if(isdigit(c))
if(islower(c))
printf(\n
printf(%c
printf(%c
printf(%c
%c
es
es
es
imprimible\n, c);
un carcter de control\, c);
un dgito\n, c);
letra minscula\n, c)
toascii
#include <ctype.h>
F.6.
627
C = toascii(entero);
asctime
#include <time.h>
#include <ctype.h>
// c se convierte en S
tm
tm_sec;
tm_min;
tm_hour;
tm_mday;
tm_mon;
tm_year;
tm_wday;
tm_yday;
tm_isdst;
//
//
//
//
//
//
//
//
//
[0,59], segundos
[0,59], minutos
[0,23], horas
[1,31], dias del mes
[0,11], mes del ao
[desde 1900], ao
[0,6], dias desde domingo
[0,265], numero dia ao
indicador hora de verano
_toupper
touper
#include <ctype.h>
time.
clock
#include <time.h>
cock_t clock(void);
Estas funciones convierten un carcter minscula en mayscula. Utilice _toupper slo cuando est seguro de que el carcter que quiere convertir 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
Calcula el tiempo empleado por el proceso llamador, es decir, el tiempo 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;
628
ctime
#include <time.h>
ftime
#include <sys/timeb.h>
void
time_t hora;
hora = time(NULL);
printf(Hora actual=%s\n, ctime(&hora));
struct timeb {
long time;
short millitm;
short timezone;
short dstflag;
//
//
//
//
//
};
difftime
double
#include <time.h>
difftime(time_t hora2, time_t hora1);
#include <dos.h>
dostounix
ftime(&hora);
#include <dos.h>
struct date {
int da_year;
char da_day;
char da_mon;
};
// ao actual (1980-2099)
// dia mes (1-31)
// mes (1-12)
gettime
time_t t;
struct time dos_hora;
struct date dos_fecha;
gatdate(&Dos_hora);
gettime(&dos_fecha);
t = dostounix(&dos_fecha, &dos_hora);
#include <dos.h>
Obtiene la hora actual del sistema. Los componentes de la hora se almacenan en la estructura time definida en dos.h.
struct time {
unsigned char ti_min
// minutos (0-59)
// horas (0-23)
// centsimas de segundo (0-99)
// segundos (0-59)
setdate
629
#include <dos.h>
};
struct date {
int da_year;
char da_day;
char da_mon;
};
gmtime
#include <time.h>
// ao actual
// da mes
// mes, 1 para enero, 2...
ahora = gmtime(&hoy);
settime
#include <dos.h>
localtime
#include <time.h>
tiempoactual = localtime(&ahora);
stime
#include <time.h>
#include <time.h>
asctime.
time_t horasis;
horasis = time(NULL);
stime(&horasis);
printf(segundos desde 1/1/70 %ld, horasis);
630
strftime
#include <time.h>
time
F.7.
#include <time.h>
chdir
#include <dir.h>
tzset
void
#include <time.h>
tzset(void);
tzset();
printf(Luz de verano = %d\n, daylight);
printf(zona horario = %ld\n, timezone);
findfirst
time.
unixtodos
void
#include <time.h>
#include <dir.h>
char ff_atrib;
int ff_ftime;
int ff_date;
long ff_fsize;
char ff_name[13];
//
//
//
//
//
encontrado atributo
hora archivo
fecha archivo
tamao archivo
encontrado nombre de archivo
fnsplit
631
#include <dir.h>
};
getcurdir
#include <dir.h>
#include <dir.h>
findnext(&filefinfo);
getcwd
#include <dir.h>
#include <dir.h>
Crea un nombre de camino completo compuesto de una letra de la unidad (u), camino del directorio (dir), nombre de archivo (nombrearch) y
extensin del archivo (ext).
getcwd obtiene el nombre de camino completo del directorio de trabajo actual, incluyendo el nombre de la unidad. El argumento numcar indica
a getcwd el mximo nmero de caracteres que el buffer camino puede contener. La funcin getcwd es til para obtener el nombre del directorio actual
y guardarlo. Si su programa cambia los directorios de trabajo durante su ejecucin, puede utilizar el nombre guardado para restaurar el directorio de trabajo actual antes de terminar.
getcwd(cuentas, 80)
632
getdisk
#include <dir.h>
int getdisk(void);
mktemp
#include <dir.h>
Crea un nombre de archivo a partir de una plantilla. Devuelve un puntero al nombre del archivo si tiene xito y nulo en caso de error.
int unidad;
clscr();
unidad = getdisk();
mktemp(nombre);
#include <dir.h>
searchpath
#include <dir.h>
Permiso denegado.
Camino archivo no encontrado.
Esta funcin es similar a RMDIR o RD de MS-DOS.
EACCES
ENOENT
#include <dir.h>
Permiso denegado.
Camino no encontrado.
resultado = mkdir(PRUEBAS);
// crea el directorio PRUEBAS
buffer = searchpath(BC.EXE);
setdisk
#include <dir.h>
F.8.
atexit
633
#include <stdlib.h>
int atexit(void(*func)(void));
exec(familia)
#include <process.h>
abort
#include <process.h>
#include <stdlib.h>
void abort(void);
if (argc 1) {
printf(Faltan argumentos!\n)
abort()
}
Funciones relacionadas : exit, _exit, raise, signal, spaw.
#include <assert.h>
exit
void
#include <stdlib.h>
exit(int estado);
assert(string != NULL;
assert(*string != \0);
assert(strlen(string) < 2);
exit(0);
634
_exit
#include <stdlib.h>
longjmp
#include <setjmp.h>
longjmp(plaza, 3);
getenv
#include <stdlib.h>
Obtiene la definicin de una variable de la tabla de entorno del proceso. 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);
#include <process.h>
perror
#include <stdio.h>
Imprime un mensaje de error del sistema en el flujo stderr. El argumento 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);
unsigned getpid(void)
putenv
printf(PID:%X\n,getpid());
localeconv
struct lconv *localeconv(void);
#include <locale.h>
if(putenv(argv[1] == -1)
#include <stdlib.h>
raise
#include <signal.h>
635
#include <setjmp.h>
Guarda el estado actual del programa (el entorno de la pila) antes de llamar 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);
F.9.
#include <signal.h>
atof()
#include <math.h>
#include <stdlib.h>
Establece tratamiento de seales de interrupcin. La funcin signal permite a un proceso elegir uno de los diferentes modos de manipular una seal
de interrupcin del sistema operativo.
signal(SIGINT, SIG_IGN);
[blanco][signo][ddd][.]]ddd][exponente][signo][ddd]
Funciones relacionadas: abort, _control87, exit, longjmp, raise,
setjmp.
spawn (funciones)
#include <stdio.h>
#include <process.h>
opcional
blancos o
tabulaciones
e/E
dgitos decimales
La conversin termina cuando aparece el primer carcter no reconocible o cuando se encuentra un carcter nulo (\0).
636
double x;
char *cad_dbl = 200-85;
...
x = atof(cad_dbl);
La conversin de caracteres de la cadena hasta que se encuentre el primer carcter no reconocible o el carcter nulo (\0).
// convierte la cadena 200.85
a real
long int i;
char cad_ent = 9876543;
...
i = atol(cad_ent); // convierte cadena 9876543 a entero
// largo.
atoi
#include <stdlib.h>
#include <stdlib.h>
opcional
espacio o tabulacin
ecvt
dgitos decimales
int i;
char *cad_ent =123;
...
i = atoi(cad_ent);// convierte la cadena 123 al entero 123
fcvt
atol
#include <stdlib.h>
#include
<stdlib.h>
[espacio en blanco][signo][ddd]
cadena = fcvt(valor, exactitud, %oposicin_d, &signo);
opcional
blancos y tabulaciones
dgitos decimales
gcvt
#include <stdlib.h>
itoa
#include stdlib.h>
strtod
637
#include stdlib.h>
+, -
d, D, e, E
blanco/
tabulacin
dgitos decimales
#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);
ltoa
#include <stdlib.h>
strtol
#include <stdlib.h>
dgitos decimales
hexadecimal
octal
638
#include <stdlib.h>
#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);
}
F.10.
strtoul
ultoa
FUNCIONES DE ENTRADA/SALIDA
#include <stdlib.h>
Las funciones de E/S tratan los datos como una secuencia o flujo de caracteres individuales. La eleccin adecuada de las funciones disponibles permite procesar datos en tamaos y formatos diferentes, desde caracteres independientes a estructuras de datos complejos. La E/S por secuencia, o flujo,
tambin proporciona acciones de taponamiento (buffering) que mejoran significativamente el rendimiento. Para utilizar los flujos, generalmente se
debe incluir el archivo stdio.h.
clearerr
void
#include <stdio.h>
clearerr(FILE *f);
fclose, fcloseall
#include <stdio.h>
#include <stdio.h>
fflush(FILE *f);
int
Limpia (vaca) un flujo. Los buffers se limpian automticamente cuando estn llenos, cuando se cierra el flujo, o cuando un programa termina normalmente sin cerrar el flujo.
fflush(fp);
fcloseall();
fflush
639
#include <stdio.h>
#include <stdio.h>
putchar.
feof
fgetchar
int
#include <stdio.h>
feof(FILE *flujo);
#int fgetchar(void);
feof(fichen);
c = fgetchar();
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
ferror(FILE *f);
int fgetpos(FILE *flujo, fpos_t *p);
Obtiene y graba la posicin actual del archivo. fos_t es un tipo definido en stdio.h.
fgetpos(fp, &pos_archivo);
640
fgets
#include <stdio.h>
*f);
fgets(caddemo,80, fp);
flushall
int flushall(void);
#include stdio.h>
Vaca (limpia) todos los buffers asociados con los archivos abiertos.
fileno
#include <stdio.h>
numvaciados = flushall();
#include <stdio.h>
fileno(stdin);
int fprintf(FILE *f, const char *formato[arg,...]);
#include <stdio.h>
Accin
r
w
a
r+
w+
a+
rb
wb
ab
rb
wb
ab
fputc
#include <stdio.h>
fputchar
int
fputchar(int c);
#include <stdio.h>
641
fputchar(q);
fputs
fseek
#include <stdio.h>
#include <stdio.h>
Escribe una letra cad en un flujo f. Devuelve el ltimo carcter impreso, si hay error devuelve EOF.
Mueve el puntero del archivo asociado con f a una nueva posicin que
est desplazada desp bytes de org.
Origen
Significado
SEEK_SET
SEEK_CUR
SEK_END
Principio de archivo.
Posicin actual puntero archivo.
Final de archivo.
fread
#include <stdio.h>
fseek(f1,OL,SEEK_SET);
// ir al principio
fsetpos
freopen
#include <stdio.h>
Cierra el archivo asociado con flujo y reasigna flujo al archivo especificado por f. Los modos (m) utilizados son los mismos de fopen.
freopen(salida.txt, w, stdout);
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
ftell(fichen);
642
fwrite
#include <stdio.h>
Escribe n elementos (registros) de longitud l desde la memoria apuntada 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);
int c;
while((c = getchar())!= \n)
printf(%c, c);
#include <stdio.h>
int getche(void);
Devuelve el siguiente carcter de un flujo de entrada dado e incrementa la posicin actual del puntero del archivo. Si se alcanza el final de archivo, se devuelve EOF.
whilec(c = getc(fx)!= EOF) {
printf(%c, c);
}
resp= getche();
gets
getch
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
Lee una lnea desde el archivo de entrada estndar stdin, por omisin
es el teclado y lo guarda en cad.
gets(nombre);
int getch(void)
do
getw
#include <sdio.h>
#include <stdio.h>
printf
#include <stdio.h>
%c
Carcter.
Entero decimal.
Real (double o float), notacin cientfica.
Coma flotante.
Cadena de caracteres.
Hexadecimal sin signo.
%e
%f
%s
%x
#include <stdio.h>
Cdigo
%d
puts
643
putw
#include <stdio.h>
rewind
#include <stdio.h>
#include <stdio.h>
#include <stdio.h>
putc(*, demo);
int scanf(const char *formato[,direccin,...]);
putch
int putch(int c);
Formato
%c
%d
%x
%i
%f
%o
Carcter.
Entero decimal.
Hexadecimal.
Entero decimal.
Nmero real.
Octal.
Puntero.
Cadena.
#include <stdio.h>
%p
%s
644
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);
#include <stdio.h>
tmpfile
#include <stdio.h>
FILE *tmpfile(void);
setbuf(fx, buffer);
#include <stdio.h>
tmpnam
#include <stdio.h>
#include <stdio.h>
ungetc
#include <stdio.h>
vsprintf.
sscanf
#include <stdio.h>
ungetch
int ungetch(int ch);
#include <stdio.h>
vfprintf,
vprintf,
vsprintf
vsscanf
645
#include <stdio.h>
#include <stdarg.h>
va_end, va_strat.
vfscanf
#include <stdio.h>
#include <stdarg.h>
_close, close
#include <io.h>
Lee entrada con formato de un flujo, tal como scanf, excepto que vfs-
_open y open.
close(f1);
vscanf
_creat
creat
#include <stdio.h>
Lee una entrada con formato de un flujo; similar a scanf, excepto que
vscanf acepta un puntero a la lista de argumentos.
#include <io.h>
#include <sys\stat.h>
#include <dos.h>
vscanf(formato, argumento);
646
Modo
Significado
S_IWRITE
S_IREAD
S_IREAD|S_IWRITE
Permiso de escritura.
Permiso de lectura.
Permiso de lectura y escritura.
eof
fh= creat(datos,S_IREAD|S_IWRITE);
#include <io.h>
creatnew
#include <io.h>
#include <dos.h>
#include <io.h>
#include <stdio.h>
int
#include <io.h>
#include <dos.h>
#include <fcntl.h>
#include <io.h>
#include <sys\stat.h>
Abre el archivo especificado en f para lectura o escritura. El argumento a indica el tipo de operacin permitida y m el tipo de permiso.
#include <io.h>
Indicador
Lectura/escritura
O_RDONLY
O_WRONLY
O_RDWR
O_NDELAY
O_APPEND
O_TRUNC
O_EXCL
O_BINARY
O_TEXT
Significado
Abrir para lectura.
Abrir para escritura.
Abrir para lectura y escritura.
Pone el puntero del archivo al final del archivo.
Se crea el archivo y se fijan atributos del archivo.
Trunca el archivo a 0.
Se utiliza con O_CREAT.
Abrir archivo en modo binario.
Abrir archivo en modo texto.
647
#include <fcntl.h>
#include <io.h>
#include <share.h>
#include <sys/stat.h>
write
#include <io.h>
Indicador
Lectura/escritura
Significado
O_RDONLY
O_WRONLY
O_RDWR
S_IWRITE
S_IREAD
S_IWRITE|S_IREAD
cgets
#include <conio.h>
Lee lon bytes del archivo asociado con d en el buffer apuntado por
buffer.
cprintf
#include <conio.h>
#include <io.h>
648
getpass
#include <conio.h>
#include <conio.h>
int
#include <dos.h>
cscanf
inport, inportb
#include <conio.h>
kbhit
int kbhit(void);
#include <conio.h>
#include <conio.h>
int getch(void);
int getche(void);
outport, outportb
#include <conio.h>
649
#include <conio.h>
Modo
Significado
00
01
02
04
06
chmod
#include <conio.h>
r = chmod(prueba.tst, S_IREAD);
F.11.
#include <stdio.h>
#include <sys\stat.h>
El sistema de archivos es un componente clave del/de la PC. Todas las aplicaciones 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.
pmodo
Permiso de acceso
S_IWRITE
S_IREAD
S_IREAD|S_IWRITE
Escritura.
Lectura.
Lectura/Escritura.
chsize
#include <io.h>
#include <io.h>
chsize(fh, 5);
650
filelength
#include <io.h>
fnmerge
#include <dir.h>
struct stat {
short st_dev;
short st_ino;
short st_mode
short st_nlink;
int st_uid;
int st_gid;
int st_rdev;
long st_size;
long st_atime;
long st_mtime;
long st_ctime;
};
//
//
//
//
//
//
//
//
//
//
//
unidad o dispositivo
nmero inodo (UNIX)
modo archivo
nmero enlaces (DOS,1)
id de usuario (UNIX)
id de grupo (slo UNIX)
dispositivo UNIX
tamao archivo en bytes
hora ltimo acceso
hora ltima (UNIX)
hora creacin
fstat(fich, &info);
isatty
#include <io.h>
#include <dir.h>
if(isatty(fileno(stdout)))
puts(es consola);
Separa un nombre de camino completo en sus componentes: letra, unidad, camino, nombre y extensin del archivo.
lock
Bloquea un nmero de bytes n del archivo h (manejador) con desplazamiento se utiliza para comparticin de archivos (orden SHARE de MSDOS). En Visual C++, la funcin equivalente es locking.
fstat
#include <sys\stat.h>
#include <io.h>
mktemp
#include <dir.h>
651
#include <sys\stat.h>
resultado = stat(stat.c,&buf);
remove
#include <stdio.h>
#include <io.h>
// borra demo
rename
#include <stdio.h>
int resultado;
resultado = rename(viejo, nuevo);
#include <dos.h>
#include <io.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
652
unlock
#include <conio.h>
Desbloquea una seccin del archivo h que ha sido bloqueada con lock.
unlock(m,OL,256);
F.12.
FUNCIONES MATEMTICAS
El C original de K&R fue diseado, inicialmente, como un lenguaje de programacin 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 flotante 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 Borland C++ no incluidas en ANSI C son: cabs, _clear87, _control87,
Clase bcd
#include <math.h>
#include <stdlib.h>
#include <complex.h>
versin compleja
int abs (int x);
double abs(complex x);
// x es 7
acos
Clase complex
#include <math.h>
#include <complex.h>
arg
double
// z = 1.5 + i1.5;
#include <complex.h>
arg(complex x);
653
complex z;
double angulo;
z = complex(1.5, 4.5);
angulo = arg(z);
cabs
#include <math.h>
#include <complex.h>
versin compleja
Calcula el arco seno del argumento x; el valor de x debe estar comprendido entre 1 y 1. La funcin asin() devuelve un valor entre //2 y /,
el valor de x debe ser en radianes.
struct complex z;
double complejo;
z.y = 3.5
z.y = 2.4
complejo = cabs(z);
printf(valor absoluto %lf\n, complejo);
Z = asin(0.7543);
#include <math.h>
#include <complex.h>
versin compleja
#include <math.h>
redondeo = ceil(5.1)
// redondeo es 6
#include <complex.h>
complex atan(complex x);
angulo = atan(1.0);
_clear87
#include <float.h>
#include <math.h>
estado = _clear87();
654
_control87
#include <float.h>
// cociente
// resto
div_t resultado;
resultado = div(35, 8);
// resultado.cociente = 4, resultado.resto = 3
estado = control87(PC24,MCW_IC);
// precisin 24 bits
#include <amth.h>
#include <complex.h>
#include <math.h>
coseno_x = cos(1.6543);
x = 100.00;
y = exp(x);
printf(El exponencial de x = %f.\n,y);
#include <math.h>
fabs, fabsl
x = 1.00
printf(x = %f.\n\n,x);
y = cosh(x);
printf(coseno hiperblico x = %f.\n\n, y);
// y vale 7.25
#include <math.h>
#include <stdlib.h>
floor
double floor(double x);
#include <math.h>
double x, y;
int n;
x = 17.5;
y = frexp(x, &n);
printf(frexp(%f, &n) = %f, n = %d\n,x,y,n);
// x vale 6
fmod
#include <math.h>
hypot
#include <math.h>
655
#include <float.h>
imag
void _fpreset(void);
#include <complex.h>
#include <math.h>
labs
long int labs(long int n);
#include <math.h>
656
ldesp, ldespl
#include <math.h>
double x = 4.0,y;
int p = 5;
y = ldexp(x, p);
#inxlude <stdlib.h>
#include <stdlib.h>
Se utiliza _lrotl para rotar a la izquierda los bits de una variable entera larga sin signo x. La rotacin de un bit a la izquierda, una posicin, significa 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.
typedef struct
long quot;
long rem;
} ldiv_t;
_lrotr
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);
#include <stdlib.h>
log, log10
#include <math.h>
#include <complex.h>
matherr
_matherrl
#include <math.h>
polar
657
#include <complex.h>
max
#include <conio.h>
poly
#include <math.h>
#include <stdlib.h>
Se utiliza poly para evaluar un polinomio en x, de grado n y cuyos coeficientes son los correspondientes al array c. La expresin utilizada para
evaluar el polinomio es:
c[n]xn+c[n-1]n-1+...+c[2](x2+c[1](x+c[0]
#include <math.h>
La funcin modf divide un nmero de coma flotante en dos partes, entera y decimal. La parte entera de x se almacena en la posicin a cuya direccin apunta partent, y la parte decimal es devuelta por la funcin.
#include <stdlib.h>
int rand(void);
658
random
modelo_nuevo = _rotl(0x1234,8);
// resultado es 3412h
#include <stdlib.h>
#include <stdlib.h>
void randomize(void);
Inicializa (genera una semilla) el generador de nmeros pseudoaleatorios con una semilla aleatoria que es funcin de la hora actual. Esta funcin
impide que se repitan las mismas secuencias de nmeros aleatorios en diferentes ejecuciones.
sin
randomize();
#include <complex.h>
#include <bcdh.h>
#include <math.h>
#include <complex.h>
sinh
#include <math.h>
#include <complex.h>
#include <stdlib.h>
y = sinh(x);
sqrt
#include <math.h>
tanh
659
#include <math.h>
#include <complex.h>
// se visualiza 5
#include <stdlib.h>
F.13.
#include <float.h>
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 trabajar 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 buffers 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>
estado = _status87();
void *memccpy(void *dest, const void *s, int c, size_t n);
#include <math.h>
#include <complex.h>
memchr
#include <mem.h>
#include <string.h>
660
void
memmove
#include <string.h>
#include <mem.h>
Compara n bytes de un buffer (b1) con los de otro buffer (b2). Devuelve un valor:
#include <string.h>
< 0 si b1 < b2
= 0 si b1 = b2
> 0 si b1 > b2
#include
#include <mem.h>
#include <string.h>
#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.
#include <mem.h>
setmem
#include <mem.h>
clrscr
661
#include <conio.h>
void (clrscr(void);
clrscr();
swab
#include <stdlib.h>
delline
#include <conio.h>
void
delline();
delline(void);
F.14.
#include <conio.h>
clreol
void
#include <conio.h>
if(!gettext(1,1,30,20, pan_grabada))
puts(color);
clreol(void);
gettextinfo
#include <conio.h>
662
struct text_info {
unsigned char winleft;
insline();
unsigned char
unsigned char
unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
};
char
char
char
char
char
char
char
char
//
//
wintop;
//
winright;
//
//
winbottom;
//
attribute;
//
normattr;
//
currmode;
//
screenheight;//
screenwidth; //
curx;
//
cury;
//
gotoxy
lowvideo
#include <conio.h>
void lowvideo(void);
#include <conio.h>
gotoxy(15, 4);
highvideo
#include <conio.h>
void highvideo(void);
normvideo
#include <conio.h>
void normvideo(void);
highvideo();
Reinicializa los atributos de texto al valor que tenan antes de que arranque el programa.
normvideo();
insline
#include <conio.h>
lor.
puttext
#include <conio.h>
textbackground
663
#include <conio.h>
textcolor
#include <conio.h>
#include <conio.h>
Cambia la forma del cursor en modo texto. El argumento tiene que ser
una de las constantes.
_NOCURSOR
_SOLIDCURSOR
_NORMALCURSOR
Desactiva el cursor.
Un carcter bloque slido es el cursor.
Un subrayado parpadeante es el cursor.
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
setcursortype(_SOLIDCURSOR);
texmode
#include <conio.h>
#include <conio.h>
-1
0
1
2
3
7
64
LASTMODE
BW40
C40
BW80
C80
MONO
C4350
textmode(C40);
664
wherex
wherey
#include <conio.h>
window
#include <conio.h>