FICHEROS INCLUDE DE TURBO C Los ficheros include definidos por el ANSI C van marcados con un asterisco. alloc.h Contiene funciones para manejo de memoria. assert.h* Define el macro-debugger assert. bios.h Contiene funciones que utilizan llamadas a ROM BIOS. conio.h Llamadas a rutinas I/O de consola del DOS. ctype.h* Clasificaci¢n y conversi¢n de caracteres. dir.h Estructuras, macros y funciones para trabajar con directorios y nombres de path. dos.h Define varias constantes y declaraciones necesarias para el DOS y llamadas espec¡ficas al 8086. errno.h* Define constantes mnem¢nicas para c¢digos de error. fcntl.h Define constantes utilizadas en conexi¢n con la librer¡a de funciones open. float.h* Contiene par metros para rutinas en punto flotante. graphics.h Declara prototipos para funciones gr ficas. io.h Contiene estructuras y declaraciones para rutinas I/O de bajo nivel. limits.h* Contiene par metros de entorno, informaci¢n en torno a limitaciones en tiempo de compilaci¢n. math.h* Declara prototipos de funciones matem ticas. mem.h Declara funciones para manipulaci¢n de memoria. process.h Contiene estructuras y declaraciones para funciones spawn... y exec... setjmp.h* Define un tipo jmp-buf utilizado por el longjmp y setjmp. share.h Define par metros utilizados en funciones a utilizar por ficheros-sharing. signal.h* Constes y declaraciones a utilizar en las funciones signal y raise. stdargs.h* Define los macros utilizados para leer la lista de argumentos en funciones declaradas para aceptar un n£mero variable de argumentos. stddef.h* Define varios macros y datos comunes. stdio.h* Define I/O standard UNIX. stdlib.h* Rutinas de conversi¢n, b£squeda, ordenaci¢n etc. string.h* Manipulaci¢n de cadena y rutinas de memoria. sys\stat.h Define constantes simb¢licas usadas para crear y abrir ficheros. sys\timeb.h Declara la funci¢n ftime y la estructura timeb. sys\types.h Declara el tipo time_t usado en las funciones time. time.h* Estructuras para conversi¢n de rutinas time. values.h Define constantes para compatibilidad UNIX. VARIABLES GLOBALES _argc Funci¢n Contador de argumentos de la l¡nea de comandos. Sintaxis extern int _argc; Declarado dos.h Nota: _argc contiene el valor de argc pasado a main al arrancar el programa. _argv Funci¢n Array de punteros a argumentos de la l¡nea comandos. Sintaxis extern char *_argv[]; Declarado dos.h daylight Funci¢n Indica si Daylight Savings Time tiene efecto. Sintaxis extern int daylight; Declarado time.h Nota: dayliht es utilizado por las funciones de fecha y hora. Tiene valor 1 para Daylight Savings Time y 0 para Standard Time. directvideo Funci¢n Flag de control de salida video. Sintaxis extern int directvideo; Declarado conio.h Nota: Controla si la salida del programa (por ejemplo en cputs) accede directamente a la RAM video (directvideo = 1) o lo hace mediante llamadas ROM BIOS (directvideo = 0). El valor por defecto es 1. _8087 Funci¢n Flag del coprocesador. Sintaxis extern int _8087; Declarado dos.h Nota: La variable _8087 es puesta al valor 1, 2 o 3 con la autodetecci¢n del coprocesador 8087, 80287 o 80387 de lo contrario valdr  0. environ Funci¢n Acceso a variables de entorno del DOS. Sintaxis extern char *environ[]; Declarado dos.h Nota: environ es un array de punteros a cadenas, es utilizado para acceder y alterar las variables de entorno del DOS. errno, _doserrno, sys_errlist, sys_nerr Funci¢n Permite a perror imprimir mensajes de error. Sintaxis extern int errno; extern int _doserrno; extern char *sys_errlist[]; extern int sys_nerr; Declarado errno.h, stdlib.h (_doserrno en dos.h). _fmode Funci¢n Determina el modo de lec./esc. de ficheros por omisi¢n. Sintaxis extern int _fmode; Declarado fcntl.h Nota: _fmode determina la apertura de los ficheros en modo texto o binario. El valor por omisi¢n es O_TEXT, de lo contrario O_BINARY. _heaplen Funci¢n Controla la longitud del near heap. Sintaxis extern unsigned _heaplen; Declarado dos.h Nota: Especifica el tama¤o de near heap en el modelo de datos small (tiny, small y medium). _heaplen no existe en los modelos largos de memoria. _osmajor, _osminor Funci¢n Contiene el n£mero mayor y menor de versi¢n de DOS. Sintaxis extern unsigned char _osmajor; extern unsigned char _osminor; Declarado dos.h _psp Funci¢n Contiene la direcci¢n del psp Sintaxis extern unsigned int _psp; Declarado dos.h _stklen Funci¢n Contiene el tama¤o de la pila. Sintaxis extern unsigned _stklen; Declarado dos.h Nota: Especifica el tama¤o de pila para cualquiera de los seis modelos de memoria. El m¡nimo tama¤o de pila es de 128 palabras. timezone Funci¢n Tiene la diferencia en seg. entre hora local y la GMT Sintaxis extern long timezone; Declarado time.h tzname Funci¢n Array de punteros a nombres de zona horaria Sintaxis extern char *tzname[2]; Declarado time.h Nota: La variable global tzname es un array de punteros a cadenas que contienen las abreviaturas a los nombres de zonas horarias. _versi¢n Funci¢n Contiene el n£mero de versi¢n de DOS Sintaxis extern unsigned int _versi¢n; Declarado dos.h LIBRERIAS DE TURBO C - alloc.h brk() Sintaxis: int brk(void *addr); Declarado: alloc.h Funci¢n: Cambia el lugar de asignaci¢n del segmento de datos. calloc() Sintaxis: void *calloc(size_t n, size_t t); Declarado: stdlib.h, alloc.h Funci¢n: Esta funci¢n, asigna espacio de memoria para un array de n elementos, de longitud t bytes cada uno de ellos. coreleft() Sintaxis: En tiny, small y medium: unsigned coreleft(void); En compact, large y huge: unsigned long coreleft(void); Declarado: alloc.h Funci¢n: Devuelve la RAM libre. farcalloc() Sintaxis: void far *farcalloc(unsigned long num, unsigned long unitsz); Declarado: alloc.h Funci¢n: Asigna memoria desde el far heap para un array de num elementos de tama¤o unitsz cada uno. Esta funci¢n devuelve un puntero al bloque asignado, o un NULL en caso de no haber espacio. farcoreleft() Sintaxis: unsigned long farcoreleft(void); Declarado: alloc.h Funci¢n: Devuelve el tama¤o de memoria disponible en el far heap. farfree() Sintaxis: void farfree(void far *bloque); Declarado: alloc.h Funci¢n: Libera el bloque del far heap dej ndolo disponible para su utilizaci¢n. farmalloc() Sintaxis: void far *farmalloc(unsigned long nbytes); Declarado: alloc.h Funci¢n: Asigna un bloque del far heap de nbytes. En caso de no poder hacerlo, devuelve NULL. farrealloc() Sintaxis: void far *farrealloc(void far *p, unsigned long t); Declarado: alloc.h Funci¢n: Cambia el tama¤o de un bloque de memoria del far heap previamente asignado mediante farmalloc o farcalloc. El argumento p apunta al comienzo del bloque. t es el nuevo tama¤o del bloque en bytes. Si no hay espacio o si t es 0 devuelve NULL. free() Sintaxis: void free(void *block); Declarado: stdio.h, alloc.h Funci¢n: Deja libre un bloque de memoria previamente asignado con calloc, malloc o realloc. malloc() Sintaxis: void *malloc(size_t size); Declarado: stdlib.h, alloc.h Funci¢n: Reserva un bloque de memoria de tama¤o size y retorna un puntero al comienzo de ella. realloc() Sintaxis: void *realloc(void *p, size_t t); Declarado: alloc.h Funci¢n: Cambia el tama¤o de un bloque de memoria previamente asignado. p es un puntero que apunta al comienzo del bloque. Si p es NULL, esta funci¢n se comporta igual que malloc y asigna un nuevo bloque de t bytes. Si p no es nulo, entonces a de ser un puntero devuelto por la funci¢n malloc, calloc o por la propia realloc. El bloque ha podido ser incluso liberado por free. El argumento t, da el nuevo tama¤o del bloque en bytes. sbrk() Sintaxis: void *sbrk(int incr); Declarado: alloc.h Funci¢n: Cambia el espacio asignado al segmento de datos increment ndolo en incr bytes. LIBRERIAS DE TURBO C - assert.h assert() Sintaxis: void assert(int expresi¢n); Declarado: assert.h stdio.h Funci¢n: La macro assert() eval£a la expresi¢n que recibe como argumento. Si el resultado es 0, escribe informaci¢n sobre el error en el canal stderr y cancela la ejecuci¢n del programa. De lo contrario, assert() no realiza ninguna acci¢n. El mensaje de error tiene la forma siguiente: Assertion failed: fille (fichero), line (n£mero de linea) Normalmente esta macro se utiliza para verificar que un programa funciona correctamente, con la expresi¢n dise¤ada de forma que es verdadera solo cuando no haya errores. LIBRERIAS DE TURBO C - bios.h bioscom() Sintaxis: int bioscom(int cmdo, char byte, int puerto); Declarado: bios.h Funci¢n: Esta funci¢n se utiliza para manipular un puerto as¡ncrono de comunicaci¢n serie RS-232. El n£mero de puerto 0 indica COM1, puerto 1 se refiere a COM2, etc. La funci¢n emplea la interrupci¢n 0x14 del BIOS. El tipo de operaci¢n que se lleva a cabo depende de cmodo. ÉÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º cmodo ³ Significado º ÇÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 ³ Inicializa puerto º º 1 ³ Env¡a un car cter º º 2 ³ Recibe un car cter º º 3 ³ Devuelve el estado del puerto º º ³ º ÈÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Cuando se inicializa el puerto, el argumento byte tiene un valor que se interpreta de la siguiente forma: ÉÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º BITS ³ Significado º ÇÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 7, 6, 5 ³ baudios º º 4, 3 ³ paridad º º 2 ³ bits de parada (stop bits) º º 1, 0 ³ bits de datos º º ³ º ÈÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Los baudios se codifican de la forma siguiente: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º BAUDIOS ³ BITS º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 9.600 ³ 111 º º 4.800 ³ 110 º º 2.400 ³ 101 º º 1.200 ³ 100 º º 600 ³ 011 º º 300 ³ 010 º º 150 ³ 001 º º 110 ³ 000 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ La paridad se codifica: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º PARIDAD ³ BITS º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º Sin paridad ³ 00 ¢ 10 º º Impar ³ 01 º º Par ³ 11 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ El n£mero de bits de parada (stop bits) depende del valor del bit correspondiente: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ» º BITS DE PARADA ³ BIT º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄĶ º 2 bits de parada ³ = 1 º º 1 bit de parada ³ = 0 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ El n£mero de bits de datos se codifica: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍ» º N§ DE BITS DA DATOS ³ BITS º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄĶ º 7 bits ³ 10 º º 8 bits ³ 11 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍͼ Por ejemplo 0XDF, programa el puerto con 4800 baudios, paridad par, 2 bits de parada y 8 bits de datos. La secuencia de bits es: 11011111 La funci¢n bioscom() devuelve un valor de 16 bits. El byte alto contiene los bits de estado. Estos bits tienen el siguiente significado: BIT SIGNIFICADO (CUANDO ACTIVADO) 0 Car cter disponible. El programa puede realizar una lectura del puerto (cmodo = 2). 1 Tamp¢n lleno (overrun). Se ha recibido un caracter cuando el programa a£n no hab¡a vaciado el anterior. Se han perdido caracteres. 2 Error de paridad 3 Error de trama. (framing error). El reconocimiento del caracter es incorrecto. 4 Error de transmisi¢n. (break detect). Error en la l¡nea. 5 Registro de transmisi¢n vac¡o. El programa puede enviar un car cter (cmodo = 1): 6 Registro de desplazamiento de la informaci¢n est  vacio. 7 Finalizado el tiempo concedido (time out): Cuando el argumento cmodo vale 0, 1 o 3, el byte bajo se codifica como se indica a continuaci¢n: BIT SIGNIFICADO (CUANDO ACTIVADO) 0 Delta clear to send. El CTS ha cambiado de estado desde la £ltima lectura. 1 Delta set ready. El DSR ha cambiado de estado desde la £ltima lectura. 2 Trailing edge ring indicator. El RI ha cambiado de estado. 3 Delta receive line signal detect. El LSD ha cambiado de estado. 4 Clear to send. Preparado para enviar 5 Data set ready. Equipo dispuesto 6 Ring indicator. Se¤al de llamada 7 Receive line signal detected. Cuando cmodo es igual a 2, bioscom() realiza una lectura del puerto y devuelve el byte leido. biosdisk() Sintaxis: int biosdisk(int cmd, int disco, int cara, int pista, int sector, int nsects, void *buffer); Declarado: bios.h Funci¢n: Utiliza la interrupci¢n 0x13 de la BIOS para operaciones de disco. disco es el n£mero de disco utilizado: 0 para la disquetera 1, 1 para la segunda, etc... Para discos duros, el valor de disco ser  0x80 para el primero, 0x81 para el segundo, etc... cmd que operaci¢n se va a efectuar Todas las operaciones ignoran la estructura l¢gica de ficheros y directorios. Solo emplea sectores y pistas. biosequip() Sintaxis: int biosequip(void); Declarado: bios.h Funci¢n: Devuelve un entero comunicando el equipamiento del sistema, que bit a bit informan de la forma siguiente: bits 14-15 N§ de impresoras en paralelo. bit 13 impresora serie conectada. Solo PCjr bit 12 E/S para juegos conectado, no usado en AT bit 9-11 N§ de puertos de serie. bit 8 0 = si DMA. 1 = no DMA bit 6-7 N§ de discos. bit 5-4 Modo de video inicial. 00=sin usar, 01=40x25, 10=80x25 tarjeta color, 11=80x25 tarjeta mono. bit 2-3 RAM en bloques de 16K. bit 1 coprocesador matem tico. bit 0 unidad de disco. bioskey() Sintaxis: int bioskey(int cmdo); Declarado: bios.h Funci¢n: Nos proporciona varias rutinas de teclado por medio de la interrupci¢n 0x16 de la BIOS. El par metro cmdo determina la operaci¢n exacta, si es 0, espera a que se pulse una tecla y devuelve un valor de 2 bytes, el byte bajo contiene el valor ASCII de la tecla, si es 0 indica que es una tecla de control, en este caso el byte alto contiene un valor que indica que tecla es. Si cmdo vale 1 la funci¢n revisa si se ha pulsado alguna tecla, devolviendo 0 si no se ha pulsado ninguna y un valor diferente de cero en caso contrario. Si cmdo vale 2 la funci¢n devuelve en el byte bajo un valor representando el estado de algunas teclas. El c¢digo es el siguiente: ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º BIT ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 ³ Pulsada la tecla Shift derecha º º 1 ³ Pulsada la tecla Shift izquierda º º 2 ³ Pulsada la tecla CTRL º º 3 ³ Pulsada la tecla Alt º º 4 ³ SCROLL LOCK activado º º 5 ³ NUM LOCK activado º º 6 ³ CAPS LOCK activado º º 7 ³ Tecla INSERT activada º ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ biodmemory() Sintaxis: int biosmemory(void); Declarado: bios.h Funci¢n: Devuelve el tama¤o de memoria en K. biosprint() Sintaxis: int biosprint(int cmdo, int byte, int port) Declarado: bios.h Funci¢n: Imprime utilizando los servicios BIOS. Si el argumento port es 0, se refiere a LPT1, si es 1 a LPT2, etc. Los valores de cmdo indican el tipo de funci¢n a realizar. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º ARGUMENTO ³ º º cmdo ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 ³ escribir byte º º 1 ³ Inicializar el puerto º º 2 ³ Devolver el estado del puerto º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ La funci¢n devuelve el estado del puerto codificado en el byte bajo: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º BIT ³ SIGNIFICADO SI ACTIVADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 ³ Error de time-out º º 1, 2 ³ Sin usar º º 3 ³ Error de E/S º º 4 ³ Impresora conectada º º 5 ³ Impresora sin papel º º 6 ³ acuse de recibo (ACK) º º 7 ³ Impresora lista para recibir datos º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ biostime() Sintaxis: long biostime(int cmd, long newtime); Declarado: bios.h Funci¢n: Lee o graba la hora del reloj del sistema. Si cmd es igual a 0, devuelve la hora actual, si es igual a 1 graba el valor almacenado en newtime. La hora tanto leida como grabada va especificada en ticks (tick = 18,2 por segundo) LIBRERIAS DE TURBO C - conio.h cgets() Sintaxis: char *cgets(char *str); Declarado: conio.h Funci¢n: Lee una cadena de caracteres de consola almacen ndola en str. clreol() Sintaxis: void clreol(void); Declarado: conio.h Funci¢n: Borra desde la posici¢n actual al final de la l¡nea de la ventana de texto. clrscr() Sintaxis: void clrscr(void); Declarado: conio.h Funci¢n: Borra toda la pantalla de texto y coloca el cursor en la posici¢n (1, 1). cprintf() Sintaxis: Igual que printf Declarado: conio.h Funci¢n: Salidas de texto por pantalla. esta funci¢n es 50 veces m s r pida que printf soportando los atributos de texto. cputs() Sintaxis: int cputs(const char *str) Declarado: conio.h Funci¢n: Escribe la cadena str en la posici¢n actual del cursor respetando los colores en curso. cscanf() Sintaxis: int cscan(char *formato[, direcci¢n, ...]); Declarado: conio.h Funci¢n: Coge entradas formateadas desde consola. delline() Sintaxis: void delline(void); Declarado: conio.h Funci¢n: Borra la l¡nea de la ventana de texto en la que actualmente se encuentra el cursor. getch() Sintaxis: int getch(void); Declarado: conio.h Funci¢n: Lee un car cter desde el teclado sin visualizarlo. getche() Sintaxis: int getche(void); Declarado: conio.h Funci¢n: Lee un car cter desde teclado mandando eco a pantalla. getpass() Sintaxis: char *getpass(const char *prompt); Declarado: conio.h Funci¢n: Lee un password desde la consola sin hacer eco. gettext() Sintaxis: int gettext(int izda, int sup, int dcha, int abaj, void *destin); Declarado: conio.h Funci¢n: Copia de la pantalla de texto, el texto comprendido entre las coordenadas dadas y lo graba en destin. gettextinfo() Sintaxis: void gettextinfo(struct text_info *r); Declarado: conio.h Funci¢n: Carga en la estructura r de tipo text_info, informaci¢n en torno al modo texto actual. La estructura es como sigue: struct text_info { unsigned char winleft; /* coord. izda de ventana*/ unsigned char wintop; /* " supe " " */ unsigned char winright; /* coord. dcha de ventana*/ unsigned char winbottom; /* " supe " " */ unsigned char attribute; /* atributo del texto */ unsigned char nomattr; /* atributo normal */ unsigned char currmode; /* BW40, BW80, C40 o C80 */ unsigned char screenheight; /* abajo - arriba */ unsigned char screenwidth; /* dcha - izda */ unsigned char curx; /* coord. x en la ventana actual */ unsigned char cury; /* " y " " " " */ }; gotoxy() Sintaxis: void goto(int x, int y); Declarado: conio.h Funci¢n: Mueve el cursor a la posici¢n especificada por (x, y) de la actual ventana de texto. La esquina superior izda es la (1, 1). highvideo() Sintaxis: void highvideo(void); Declarado: conio.h Funci¢n: Aumenta la intensidad del texto que salga por pantalla a partir de llamar a la funci¢n. insline() Sintaxis: void insline(void); Declarado: conio.h Funci¢n: Inserta una l¡nea en blanco en la posici¢n actual del cursor en la ventana de texto. kbhit() Sintaxis: int kbhit(void); Declarado: conio.h Funci¢n: Chequea el teclado buscando el car cter correspondiente a la tecla m s recientemente pulsada. Esta funci¢n devuelve un valor distinto de 0 si se ha pulsado una tecla, sino devuelve un 0. lowvideo() Sintaxis: void lowvideo(void); Declarado: conio.h Funci¢n: Hace que la siguiente salida en pantalla sea en baja intensidad. movetext() Sintaxis: int movetext(int izda, int sup, int dcha, int inf, int nuevaizda, int nuevoinf); Declarado: conio.h Funci¢n: Mueve el texto incluido entre izda, sup, dcha, inf coloc ndolo en otra parte de la pantalla cuyo v‚rtice inferior izquierdo viene dado por nuevaizda, nuevoinf. normvideo() Sintaxis: void normvideo(void); Declarado: conio.h Funci¢n: Pone el atributo de texto en modo normal. putch() Sintaxis: int putch(int c); Declarado: conio.h Funci¢n: Escribe el car cter c en pantalla putchar() Sintaxis: int putchar(int c); Declarado: conio.h Funci¢n: Escribe el car cter c en stdout. puttext() Sintaxis: int puttext(int izda, int sup, int dcha, int abajo, void *fuente); Declarado: conio.h Funci¢n: Recupera un texto que est  en memoria en el  rea apuntado por fuente sac ndolo en pantalla en las coordenadas izda, sup, dcha, abajo. textattr() Sintaxis: void textattr(int nueatri); Declarado: conio.h Funci¢n: Establece el atributo de texto. nueatri es un valor en el cual los bits 0 al 2 especifican el color del primer plano, el bit 3 especifica la intensidad, los bits 4 al 6 especifican el fondo y el bit 7 especifica el modo de parpadeo de la forma siguiente: ÚÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄÂÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ R ³ G ³ B ³ ³ R ³ G ³ B ³ ÀÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÙ bits 7 6 5 4 3 2 1 0 Si bit 7 = 0 entonces normal, si 1 entonces parpadeo. Si bit 3 = 0 entonces normal, si 1 entonces brillante. Colores de primer plano y de fondo: 000 = negro 001 = azul 010 = verde 011 = cian 100 = rojo 101 = magenta 110 = marr¢n 111 = blanco textbackground() Sintaxis: void textbackground(int nuecolor); Declarado: conio.h Funci¢n: Establece el color de fondo de texto mostrado a trav‚s de cprintf, cputs y putch. Con esta funci¢n se puede utilizar cualquiera de los colores de baja intensidad pero no los de alta intensidad o el parpadeo, los colores disponibles son: 0 = BLACK 1 = BLUE 2 = GREEN 3 = CYAN 4 = RED 5 = MAGENTA 6 = BROWN 7 = LIGTGRAY textcolor() Sintaxis: void textcolor(int nuecolor); Declarado: conio.h Funci¢n: Establece el color del primer plano o los bits del primer plano del byte atributo de pantalla. El argumento nuecolor puede ser un valor num‚rico o una constante simb¢lica como sigue: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Baja intensidad ³ Alta intensidad º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 = BLACK ³ 8 = DARKGRAY º º 1 = BLUE ³ 9 = LIGHTBLUE º º 2 = GREEN ³ 10 = LIGHTGREEN º º 3 = CYAN ³ 11 = LIGHTCYAN º º 4 = RED ³ 12 = LIGHTRED º º 5 = MAGENTA ³ 13 = LIGHTMAGENTA º º 6 = BROWN ³ 14 = YELLOW º º 7 = LIGTGRAY ³ 15 = WHITE º º ³ 128 = BLINK º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ textmode() Sintaxis: void textmode(int nuevomodo); Declarado: conio.h Funci¢n: Pone la pantalla en modo de texto. el par metro nuevomodo puede ser: ÉÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º LASTMODE ³ -1 ³ Modo de texto anterior º º BW40 ³ 0 ³ Blanco y negro 40 columnasº º C40 ³ 1 ³ Color, 40 columnas º º BW80 ³ 2 ³ Blanco y negro 80 columnasº º C80 ³ 3 ³ Color, 80 columnas º º MONO ³ 7 ³ Monocromo, 80 columnas º º ³ ³ º ÈÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ungetch() Sintaxis: int ungetch(int ch); Declarado: conio.h Funci¢n: Devuelve a la memoria intermedia de la consola, el £ltimo car cter le¡do, haciendo que este car cter sea el pr¢ximo car cter a leer. Devuelve el car cter ch si existe. Si el valor devuelto es EOF, es que ha ocurrido un error. wherex() Sintaxis: int wherex(void); Declarado: conio.h Funci¢n: Devuelve en un valor entero la posici¢n horizontal actual del cursor. wherey() Sintaxis: int wherey(void); Declarado: conio.h Funci¢n: Devuelve en un valor entero la posici¢n vertical actual del cursor. window() Sintaxis: void window(int izda, int sup, int dcha, int inf); Declarado: conio.h Funci¢n: Define una ventana de texto donde los cuatro argumentos especifican los l¡mites de la fila y columna del rect ngulo de la ventana de la pantalla de texto. Una vez que se ha especificado una ventana de texto mediante window, las funciones de manipulaci¢n de texto (para mostrar en pantalla, mover en pantalla, borrar o insertar texto, etc.) usan £nicamente la ventana y no toda la pantalla. LIBRERIAS DE TURBO C - ctype.h isalnum() Sintaxis: int isalnum(int c); Declarado: ctype.h Funci¢n: Mira si c es un car cter 'A -Z', 'a - z' o '1 - 9', devolviendo un 0 en caso contrario. isalpha() Sintaxis: int isalpha(int c); Declarado: ctype.h Funci¢n: Mira si c es un car cter 'A -Z', 'a - z', devolviendo un 0 en caso contrario. isascii() Sintaxis: int isascii(int c); Declarado: ctype.h Funci¢n: Mira si c es un car cter comprendido entre 0 y 127, devolviendo un 0 en caso contrario. iscntrl() Sintaxis: int iscntrl(int c); Declarado: ctype.h Funci¢n: Comprueba si c es un car cter de control (0 - 31 y 127) devolviendo un 0 en caso contrario. isdigit() Sintaxis: int isdigit(int c); Declarado: ctype.h Funci¢n: Mira si c es un d¡gito '1 - 9', devolviendo un 0 en caso contrario. isgraph() Sintaxis: int isgraph(int c); Declarado: ctype.h Funci¢n: Comprueba si c es un car cter escribible, exceptuando el espacio (33 - 126), devolviendo un 0 en caso contrario. islower() Sintaxis: int islower(int c); Declarado: ctype.h Funci¢n: Comprueba si c es una letra min£scula, devolviendo un 0 en caso contrario. isprint() Sintaxis: int isprint(int c); Declarado: ctype.h Funci¢n: Comprueba si c es un car cter escribible (32 - 126), devolviendo un 0 en caso contrario. ispunct() Sintaxis: int ispunct(int c); Declarado: ctype.h Funci¢n: Comprueba si c es un car cter de puntuaci¢n, devolviendo un 0 en caso contrario. isspace() Sintaxis: int isspace(int c); Declarado: ctype.h Funci¢n: Comprueba si c es un car cter espacio en blanco (9 - 13 o 32), devolviendo un 0 en caso contrario. isupper() Sintaxis: int isupper(int c); Declarado: ctype.h Funci¢n: Comprueba si c es una letra may£scula, devolviendo un 0 en caso contrario. isxdigit() Sintaxis: int isxdigit(int c); Declarado: ctype.h Funci¢n: Comprueba si c es un d¡gito hexadecimal, devolviendo un 0 en caso contrario. toascii() Sintaxis: int toascii(int c); Declarado: ctype.h Funci¢n: Pone todos los bits de c excepto los 7 bits de menor orden a 0. Esto es convierte c en un car cter ASCII. _tolower() Sintaxis: int _tolower(int c); Declarado: ctype.h Funci¢n: Es una macro que convierte c en min£scula si es may£scula. tolower() Sintaxis: int _tolower(int c); Declarado: ctype.h Funci¢n: Es una funci¢n que convierte c en min£scula si es may£scula. _toupper() Sintaxis: int _toupper(int c); Declarado: ctype.h Funci¢n: Es una macro que convierte c en may£scula si es min£scula. toupper() Sintaxis: int _toupper(int c); Declarado: ctype.h Funci¢n: Es una funci¢n que convierte c en may£scula si es min£scula. LIBRERIAS DE TURBO C - dir.h chdir() Sintaxis: int chdir(const char *path); Declarado: dir.h Funci¢n: Cambia de directorio al especificado por path. Si todo va bien, esta funci¢n devuelve 0, en caso contrario devuelve -1. findfirst() Sintaxis: #include #include int findfirst(const char *path, struct ffblk *ffblk, int atri); Declarado: dir.h Funci¢n: Busca en un directorio del disco. path es una cadena opcional que indica el disco y directorio y ficheros, pudiendo incluir comodines. Si los ficheros son encontrados, la estructura ffblk es rellenada con la informaci¢n correspondiente. La estructura ffblk es como sigue: struct ffblk { char ff_reserved[2]; /* reservado para el DOS */ char ff_attrib; /* atributo */ char ff_time; /* hora del fichero */ char ff_date; /* fecha del fichero */ char ff_fsize; /* tama¤o fichero */ char ff_name[13] /* nombre del fichero */ }; atrib es un atributo del DOS, y puede ser uno de los siguientes que est n declarados en dos.h: FA_RDONLY archivo solo lectura. FA_HIDDEN " oculto FA_SYSTEM " sistema FA_LABEL etiqueta de volumen FA_DIREC directorio FA_ARCH archivo findnext() Sintaxis: int findnext(struct ffblk *ffblk); Declarado: dir.h Funci¢n: Continua la b£squeda de findfirst. Esta funci¢n y la anterior devuelven 0 si no hay errores, de lo contrario devuelven -1. En este £ltimo caso, se asigna a errno el valor ENOENT (nombre de fichero no encontrado) 0 ENMFILE (no hay m s ficheros en el directorio). fnmerge() Sintaxis: void fnmerge(char *path, char *disco, char *dir, char *nombre, char *ext); Declarado: dir.h Funci¢n: Forma el nombre de un fichero desde sus componentes. El nuevo path ser : X:\DIR\SUBDIR\NOMBRE.EXT Donde disco = X: dir = \DIR\SUBDIR\ nombre= NOMBRE ext = .EXT fnsplit() Sintaxis: int fnsplit(char *path, char *disco, char *dir, char *nombre, char *ext); Declarado: dir.h Funci¢n: Separa el nombre de un fichero (path) en sus componentes (disco, dir, nombre, ext). Esta funci¢n hace justo lo contrario que la anterior. getcurdir() Sintaxis: int getcurdir(int *drive, char *directorio); Declarado: dir.h Funci¢n: Carga el nombre del directorio actual de trabajo en directorio y el disco en drive. Devuelve -1 en caso de error y 0 en otro caso. getcwd() Sintaxis: char *getcwd(char *path, int buflen); Declarado: dir.h Funci¢n: Obtiene el nombre del directorio actual de trabajo. Copia el nombre de la v¡a de acceso del directorio actual (incluyendo la unidad de disco) dentro de la cadena path, buflen indica el n£mero m ximo de caracteres que el programa permite en el nombre de la v¡a de acceso. getdisk() Sintaxis: int getdisk(void); Declarado: dir.h Funci¢n: Devuelve el n£mero del disco actual (0=A, 1=B, etc) mkdir() Sintaxis: int mkdir(const char *path); Declarado: dir.h Funci¢n: Crea el directorio especificado en path, retornando 0, en caso de error devuelve -1. mktemp() Sintaxis: char *mktemp(char *fnombre); Declarado: dir.h Funci¢n: Genera un nombre de fichero que no existe y lo copia en la cadena se¤alada por fnombre. Cuando se llama a mktemp(), la cadena se¤alada por fnombre debe contener el caracter X repetido seis veces, y al final el caracter nulo. La funci¢n mktemp() transforma esta cadena un un £nico nombre de fichero. Sin embargo no crea el fichero. En caso de ‚xito, devuelve un puntero a fnombre, en caso contrario devuelve un nulo. rmdir() Sintaxis: int rmdir(char *path); Declarado: dir.h Funci¢n: Borra el directorio indicado en path. Funciona igual que la instrucci¢n an loga del DOS. En caso de error devuelve -1, y si la operaci¢n es correcta 0. searchpath() Sintaxis: char *searchpath(char *fichero); Declarado: dir.h Funci¢n: Intenta localizar fichero buscando por los subdirectorios indicados en la orden del dos PATH:. Esta funci¢n devuelve un puntero a la cadena del nombre de fichero si este es encontrado o un NULL en caso contrario. setdisk() Sintaxis: int setdisk(int drive); Declarado: dir.h Funci¢n: Selecciona el disco actual con el valor dado por drive: 0 para A, 1 para B, 2 para C, etc... Esta funci¢n devuelve el numero total de discos disponibles. LIBRERIAS DE TURBO C - dos.h absread() Sintaxis: int absread(int d, int ns, int ls, void *buffer); Declarado: dos.h Funci¢n: Lee sectores espec¡ficos de disco. Ignora la estructura l¢gica del disco no prestando atenci¢n a ficheros, FATs o directorios. La lectura la hace v¡a interrupci¢n Ox25. d = N£mero de disco a leer (0=A, 1=B, etc.) ns = N£mero de sectores a leer. ls = N£mero de sector l¢gico de comienzo. buffer = Direcci¢n de memoria donde se almacenan los datos le¡dos Si no hay error esta funci¢n devuelve 0, en caso contrario devuelve -1 y coloca en errno el valor del registro AX. abswrite() Sintaxis: int abswrite(int d, int ns, int ls, void *buffer); Declarado: dos.h Funci¢n: Esta funci¢n es id‚ntica a la anterior hasta en los valores que devuelve, solo que en lugar de leer del disco, escribe en ‚l. allocmem() Sintaxis: int allocmem(unsigned tama¤o, unsigned *seg); Declarado: dos.h Funci¢n: Realiza una llamada al DOS con la interrupci¢n 0x48 para reservar un bloque de memoria. El bloque se ajusta por p rrafos de 16 byts. La funci¢n asigna la direcci¢n del segmento donde est  el bloque en el entero apuntado por seg. El argumento tama¤o especifica el n£mero de p rrafos que se asignan. Si se puede asignar la memoria solicitada, la funci¢n devuelve un -1. Si no hay suficiente memoria libre, no se asigna ningun valor a la variable apunatada por seg, y la funci¢n devuelve el tama¤o del mayor bloque libre. bdos() Sintaxis: int bdos(int dosfun, unsigned dosdx, unsigned dosal) Declarado: dos.h Funci¢n: Esta funci¢n llama al DOS para ejecutar la rutina especificada por dosfun, despu‚s de copiar los valores dosdx y dosal en los registros DX y AL. Para efectuar la llamada esta funci¢n ejecuta la instrucci¢n INT 21H. bdosptr() Sintaxis: int bdosptr(int dosfun, void *argument, unsigned dosal); Declarado: dos.h Funci¢n: Esta funci¢n permite acceso a diversas rutinas del DOS, estas rutinas del sistema requieren un puntero a un argumento utilizado. dosfun en el Manual de Referencia del DOS. En el modelo small el par metro argument ir  en DX, en los modelos largos ir  en DS:DX. En caso exitoso la funci¢n devolver  un valor en AX. En caso de error devolver  -1. country() Sintaxis: struct country *country(int c¢digo, struct country *ptr); Declarado: dos.h Funci¢n: Asigna valores a ciertos par metros concernientes a un pa¡s. Devuelve un puntero a la estructura country que se pasa como argumento. La estructura contiene la siguiente informaci¢n: struct country { int co_date; /* formato de fecha */ char co_curr[5]; /* s¡mbolo de la moneda */ char co_thsep[2]; /* separador de miles */ char co_desep[2]; /* separador de decimales */ char co_dtsep[2]; /* separador de fecha */ char co_tmsep[2]; /* separador de hora */ char co_currstyle; /* formato de moneda */ char co_digits; /* d¡gitos significativos en moneda */ int(far *co_case)() /* funci¢n de casos */ char co_dasep; /* separador de datos */ char co_fill[10]; /* relleno */ }; Si el argumento c¢digo contiene un 0, se asigna la informaci¢n concerniente al pais en la estructura apuntada por ptr. Si c¢digo contiene un valor diferente a 0, la informaci¢n de la estructura apuntada por ptr se convierte en la nueva informaci¢n del pa¡s. El campo co_date indica el formato de la fecha. En EE.UU. se emplea el formato (mes,d¡a,a¤o), asignando a co_date el valor 0. Si co_date contiene un 1, la fecha aparecer  con formato europeo: (dia,mes,a¤o). Si contiene un 2, aparece como (a¤o,mes,d¡a). La forma como aparecen los caracteres de moneda se indican con el campo co_currstyle. Puede tener los siguientes valores: ÉÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º VALOR ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 ³ el s¡mbolo precede al valor º º 1 ³ el s¡mbolo va a continuaci¢n del valor º º 2 ³ precede a valor con espacio de separaci¢nº º 3 ³ despues de valor con espacio de separaci¢º ÈÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ctrlbrk() Sintaxis: void ctrlbrk(int (*funci¢n)(void)); Declarado: dos.h Funci¢n: Cuando se pulsa Ctrl+Break se ejecutar  funci¢n. Esta funci¢n interviene la interrupci¢n 0x23 desviando su llamada a funci¢n. Cuando el programa termina Turbo C devuelve el handler original del DOS. delay() Sintaxis: void delay(unsigned milisegundos); Declarado: dos.h Funci¢n: Esta funci¢n suspende la ejecuci¢n del programa durante el intervalo especificado en milisegundos. disable() Sintaxis: void disable(void); Declarado: dos.h Funci¢n: Desautoriza las interrupciones, a excepci¢n de las no enmascarables (NMI). dosexterr() Sintaxis: int dosexterr(atruct DOSERROR *eblkp); Declarado: dos.h Funci¢n: Esta funci¢n llena la estructura DOSERROR apuntada por eblkp con informaci¢n en torno al error producido despu‚s la utilizaci¢n de la £ltima funci¢n del DOS. La estructura es de la forma siguiente: struct DOSERROR { int exterror; /* c¢digo de error */ char class; /* tipo de error */ char action; /* acci¢n recomendada */ char locus; /* lugar donde ocurri¢ el error }; Esta funci¢n retorna el valor de exterror. dostounix() Sintaxis: long dostounix(struct date *d, struct time *t); Declarado: dos.h Funci¢n: Devuelve la fecha y hora dada por getdate y gettime en formato UNIX. d apunta a una estructura de tipo date y t a una de tipo time conteniendo informaci¢n en torno a una fecha y hora v lida de DOS. El formato ANSI de la fecha es el mismo que el de UNIX. __emit__() Sintaxis: void __emit__(argumento, ...); Declarado: dos.h Funci¢n: Inserta valores literales en el c¢digo objeto. Es utilizado para introducir c¢digo m quina. enable() Sintaxis: void enable(void); Declarado: dos.h Funci¢n: Habilita las interrupciones de hardware. FP_OFF() Sintaxis: unsigned FP_OFF(puntfar); Declarado: dos.h Funci¢n: FP_OFF es una macro que se utiliza para obtener el desplazamiento del puntero far puntfar. FP_SEG() Sintaxis: unsigned FP_SEG(puntfar); Declarado: dos.h Funci¢n: Es una macro que devuelve el segmento del puntero far puntfar. freemem() Sintaxis: int freemem(unsigned segx); Declarado: dos.h Funci¢n: Libera un bloque de memoria previamente asignado con allocmem. segx es la direcci¢n del segmento del bloque. geninterrupt() Sintaxis: void geninterrupt(int intr_num); Declarado: dos.h Funci¢n: Llama a la interrupci¢n intr_num. El estado de los registros despu‚s de la llamada dependen de la interrupci¢n. getcbrk() Sintaxis: int getcbrk(void); Declarado: dos.h Funci¢n: Indica el tipo de revisi¢n de la secuencia CTRL+BRK. Devuelve 0 si el control es s¢lo en la Entrada/Salida y 1 si es en cada llamada a una funci¢n del DOS. Este par metro se puede definir en la l¡nea de ordenes del DOS, con la opci¢n BREAK. getdate() Sintaxis: void getdate(struct date *datep); Declarado: dos.h Funci¢n: Rellena la estructura de tipo date apuntada por datep con el actual sistema de fecha. El tipo de estructura date es como sigue: struct date { int da_year; /* a¤o actual */ char da_day; /* d¡a del mes */ char da_mon; /* mes (1= Enero) */ getdfree() Sintaxis: void getdfree(unsigned char disco, struct dfree *dtable); Declarado: dos.h Funci¢n: Chequea el disco indicado en disco (0=actual, 1=A, etc..) rellenando la estructura dtable de tipo dfree, que es como sigue: struct dfree { unsigned df_avail; /* clusters libres */ unsigned df_total; /* total clusters */ unsigned df_bsec; /* bytes por sector */ unsigned df_sclus; /* sectores por cluster */ }; getdta() Sintaxis: char *far getdta(void); Declarado: dos.h Funci¢n: Devuelve la un puntero far al DTA del disco (disk transfer address). getfat() Sintaxis: void getfat(unsigned char disco, struct fatinfo *dtabla); Declarado: dos.h Funci¢n: Carga informaci¢n de la FAT del disco especificado (0=actual, 1=A, etc) en la estructura dtabla de tipo fatinfo que es del siguiente formato: struct fatinfo { char fi_sclus; /* sectores por cluster */ char fi_fatid; /* FAT en bytes */ int fi_nclus; /* n£mero de clusters */ int fi_bysec; /* bytes por sector */ }; getfatd() Sintaxis: void getfatd(struct fatinfo *dtabla); Declarado: dos.h Funci¢n: Esta funci¢n es identica a la anterior solo se diferencia en que la estructura es rellenada con el disco actual. getpsp() Sintaxis: unsigned getpsp(void); Declarado: dos.h Funci¢n: Devuelve la direcci¢n del PSP (Prefijo del Segmento de Programa). gettime() Sintaxis: void gettime(struct time *timep); Declarado: dos.h Funci¢n: Carga en la estructura timep de tipo time informaci¢n en torno a la hora actual. La estructura es como sigue: struct time { unsigned char ti_min; /* minutos */ unsigned char ti_hour; /* horas */ unsigned char ti_hund; /* cent‚s. de seg. */ unsigned char ti_sec; /* segundos */ }; getvect() Sintaxis: void interrupt(*getvect(int interrupno))(); Declarado: dos.h Funci¢n: La funci¢n getvect lee el valor del vector de interrupci¢n dado por interrupno y devuelve un puntero far a la interrupci¢n. getverify() Sintaxis: int getverify(void); Declarado: dos.h Funci¢n: Devuelve el estado actual de verificaci¢n de flags 0 para off y 1 para on. harderr() Sintaxis: void harderr(int (*handler)()); Declarado: dos.h Funci¢n: Reemplaza el handler de errores del DOS por uno definido por el programador. El argumento es la nueva funci¢n que se invocar  cada vez que se produzca una interrupci¢n 0x24. Esta funci¢n debe tener el siguiente prototipo: funci¢n(int errno, int ax, int bp, int si); donde: errno Es el c¢digo de errores del DOS. ax,bp,si Contienen los valores de los registros de su mismo nombre. Si ax es mayor o igual que cero, indica un error de disco. Si esto ocurre, se puede realizar la operaci¢n AND con ax y 0xFF para conocer que disco di¢ el error. El resultado ser  1 para A:, 2 para B:, etc. Si ax es negativo, indica un error fatal de dispositivo. Se debe consultar el manual de errores del DOS. Hay que tener en cuenta que la rutina de interrupci¢n no puede emplear funciones de E/S de la librer¡a, pues esta no es reentrante, y solo se puede utilizar ciertas llamadas al DOS, las n£meros 1 al 12. La rutina de interrupci¢n termina con una llamada a la funci¢n hardresume(), o a hardretn(), devolviendo un c¢digo. Este c¢digo ser  0 para ignorar, 1 para repetir y 2 para abortar el proceso que gener¢ el error hardresume() Sintaxis: void hardresume(int axret); Declarado: dos.h Funci¢n: El indicador de error establecido por harderr puede llamar a hardresume para volver al DOS. hardretn() Sintaxis: void hardretn(int retn); Declarado: dos.h Funci¢n: El indicador de error establecido con por harderr puede ser devuelto directamente al programa llamando a hardretn. inport() Sintaxis: int inport(int portid); Declarado: dos.h Funci¢n: Lee una palabra del puerto especificado por portid. inportb() Sintaxis: int inportb(int portid); Declarado: dos.h Funci¢n: Lee un byte del puerto especificado por portid. int86() Sintaxis: int int86(int n_int, union REGS *in_regs, union REGS *out_regs); Declarado: dos.h Funci¢n: Es utilizada para llamar directamente a la interrupci¢n n_int del DOS, para ello primero copia el contenido de in_regs en los registros correspondientes, y despu‚s de ejecutarse la interrupci¢n, copia los registros en out_regs. No utilizar esta funci¢n para interrupciones que modifiquen el registro DS, en su lugar utilizar int86x o intdosx. int86x() Sintaxis: int int86(int n_int, union REGS *in_regs, union REGS *out_regs, struct SREGS *regs_seg); Declarado: dos.h Funci¢n: Ejecuta la interrupci¢n especificada por n_int, para ello primero copia el contenido de in_regs y de regs_seg en los registros correspondientes solo, de regs_seg son utilizados los valores de los registros DS y ES , y despu‚s de ejecutarse la interrupci¢n, copia los registros en out_regs y los valores actuales de DS y ES, restaurando DS. Esta funci¢n devuelve el contenido del registro AX. intdos() Sintaxis: int intdos(union REGS *in_regs, union REGS *out_regs); Declarado: dos.h Funci¢n: Llama a la rutina del DOS especificada por los valores de los registros de in_regs. Para efectuar la llamada, esta funci¢n ejecuta la instrucci¢n INT 21. intdosx() Sintaxis: int intdos(union REGS *in_regs, union REGS *out_regs, struct SREGS *regs_seg); Declarado: dos.h Funci¢n: Llama a la rutina del DOS especificada por los valores de los registros de in_regs. Para efectuar la llamada, esta funci¢n ejecuta la instrucci¢n INT 21. Antes de ejecutarse la interrupci¢n, esta funci¢n copia el contenido de in_regs y de regs_seg en los registros correspondientes. intr() Sintaxis: void intr(int intno, struct REGPACK *preg); Declarado: dos.h Funci¢n: Esta funci¢n es un interface alternativo para ejecutar software de interrupciones, llamando a la interrupci¢n intno. preg es la direcci¢n de una estructura que contiene: a) Los registros antes de la llamada. b) El valor de los registros despu‚s de la llamada. La estructura REGPACK es como sigue: struct REGPACK { unsigned r_ax, r_bx, r_cx, r_dx; unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags; }; keep() Sintaxis: void keep(unsigned char estado, unsigned size); Declarado: dos.h Funci¢n: Sale al DOS y queda residente, poniendo el estado de salida en estado. El tama¤o del programa (size) se pone en p rrafos. El estado se interpreta desde el DOS, o desde el proceso que invoc¢ el programa. El DOS reserva el espacio solicitado comenzando a partir de la direcci¢n del PSP. MK_FP() Sintaxis: void far *MK_FP(unsigned seg, unsigned ofs); Declarado: dos.h Funci¢n: Es un macro que devuelve un puntero far mediante los valores seg y ofs. nosound() Sintaxis: void nosound(void); Declarado: dos.h Funci¢n: Pone el altavoz del PC en off. outport() Sintaxis: void outport(int portid, int valor); Declarado: dos.h Funci¢n: Manda la palabra valor por el puerto identificado por portid. outportb() Sintaxis: void outportb(int portid, unsigned char valor); Declarado: dos.h Funci¢n: Manda el byte valor por el puerto identificado por portid. parsfnm() Sintaxis: char *parsfnm(char *nombref, struct fcb *fcbptr, int opcion); Declarado: dos.h Funci¢n: Convierte un nombre de fichero en forma de cadena de caracteres al formato requerido por el bloque de control de ficheros (FCB). Una vez convertido, lo almacena en la estructura fcb apuntada por el argumento fcbptr. Esta funci¢n se emplea para asignar un valor al registro AL antes de la llamada. La funci¢n devuelve un puntero al siguiente byte despu‚s del nombre del fichero. Si hay errores, devuelve un puntero nulo. La estructura fcb tiene la siguiente forma: struct fcb { char fcb_drive; 0= por defecto, 1=A, 2=B, etc char fcb_name[8]; Nombre del fichero char fcb_ext[3]; Extensi¢n del fichero short fcb_curblk; N§ de bloque en curso short fcb_recsize; Tama¤o de registro l¢gico long fcb_filsize; Tama¤o del fichero; short fcb_date; Fecha de £ltima escritura char fcb_resv[10]; Reservado para DOS char fcb_currec; Registro en curso long fcb_random; N§ de registro aleatorio }; peek() Sintaxis: int peek(unsigned segment, unsigned despl); Declarado: dos.h Funci¢n: Devuelve la palabra cuya localizaci¢n en memoria es segment:despl. peekb() Sintaxis: int peekb(unsigned segment, unsigned despl); Declarado: dos.h Funci¢n: Devuelve byte cuya localizaci¢n en memoria es segment:despl. poke() Sintaxis: void poke(unsigned segment, unsigned despl, int valor); Declarado: dos.h Funci¢n: Almacena el entero valor en la localizaci¢n de memoria segment:despl. pokeb() Sintaxis: void poke(unsigned segment, unsigned despl, char valor); Declarado: dos.h Funci¢n: Almacena el byte valor en la localizaci¢n de memoria segment:despl. randbrd() Sintaxis: int randbrd(struct fcb *fcbptr, int n); Declarado: dos.h Funci¢n: Lee n registros desde el DTA (Direcci¢n de transferencia de datos del disco). Los registros leidos se almacenan en las estructuras de tipo fcb, apuntadas por el argumento fcbptr. La estructura fcb tiene la siguiente forma: struct fcb { char fcb_drive; 0= por defecto, 1=A, 2=B, etc char fcb_name[8]; Nombre del fichero char fcb_ext[3]; Extensi¢n del fichero short fcb_curblk; N§ de bloque en curso short fcb_recsize; Tama¤o de registro l¢gico long fcb_filsize; Tama¤o del fichero; short fcb_date; Fecha de £ltima escritura char fcb_resv[10]; Reservado para DOS char fcb_currec; Registro en curso long fcb_random; N§ de registro aleatorio }; La funci¢n randbrd() emplea la funci¢n 0x27 del DOS para leer los registros. Puede devolver los valores siguientes: 0 No hubo errores. 1 Encontrado un EOF pero el £ltimo registro est  completo. 2 Demasiados registros. 3 Encontrado EOF y el £ltimo registro est  incompleto randbwr() Sintaxis: int randbwr(struct fcb *fcbptr, int n); Declarado: dos.h Funci¢n: Es similar a la funci¢n anterior. Emplea la funci¢n 0x28 del DOS para escribir los registros de tipo fcb apuntados por fcbptr segread() Sintaxis: void segread(struct SREGS *regs_reg); Declarado: dos.h Funci¢n: Copia en una estructura de tipo SREGS apuntada por regs_seg, el contenido de los registros de segmento. La estructura es como sigue: struct SREGS { unsigned int es; unsigned int cs; unsigned int ss; unsigned int ds; }; setblock() Sintaxis: int setblock(unsigned segx, unsigned tama¤o); Declarado: dos.h Funci¢n: Modifica el tama¤o de un bloque previamente asignado mediante allocmmem. El bloque es segx, y el nuevo tama¤o es tama¤o. setcbrk() Sintaxis: int setcbrk(int valor); Declarado: dos.h Funci¢n: Activa o desactiva la funci¢n de Ctrl+Break. Si valor es 0 lo pone en off, si es 1 en on. setdate() Sintaxis: void setdate(struct date *fecha); Declarado: dos.h Funci¢n: Carga la fecha del DOS en la estructura de tipo date fecha. La estructura es como sigue: struct date { int da_year; char da_day; char da_mon; }; setdta() Sintaxis: void setdta(char far *dta); Declarado: dos.h Funci¢n: Cambia la actual selecci¢n del disco del DOS trasfiri‚ndolo a la direcci¢n (DTA) del valor dado por dta. settime() Sintaxis: void settime(struct time *timep); Declarado: dos.h Funci¢n: Selecciona la hora del sistema en la estructura timep de tipo time, que es como sigue: struct time { unsigned char ti_min; unsigned char ti_hour; unsigned char ti_hund; /*cent‚simas de seg*/ unsigned char ti_sec; }; setvect() Sintaxis: void setvect(int inter, void interrupt (*isr)()); Declarado: dos.h Funci¢n: Almacena la direcci¢n de la rutina de interrupci¢n isr en la tabla de vectores de interrupci¢n. La posici¢n viene indicada por intr setverify() Sintaxis: void setverify(int valor); Declarado: dos.h Funci¢n: Selecciona la verificaci¢n de escritura en disco. Si valor = 0, la verificaci¢n est  en off, si valor = 1 est  en on. sleep() Sintaxis: void sleep(unsigned segundos); Declarado: dos.h Funci¢n: Suspende la ejecuci¢n durante un intervalo de segundos especificado en segundos. sound() Sintaxis: void sound(unsigned frecuencia); Declarado: dos.h Funci¢n: Pone el altavoz sonando. frecuencia es un valor entero perteneciente a un tono (frecuencia) en hercios. El tono empieza cuando el programa llama a sound, contin£a mientras la CPU ejecuta otro c¢digo y termina solo cuando el programa llama a nosound. unixtodos() Sintaxis: void unixtodos(long time, struct date *d, struct time *t); Declarado: dos.h Funci¢n: Convierte el formato UNIX dado en time en formato DOS y llena las estructuras de tipo date y time apuntadas por d y t. unlink() Sintaxis: int unlink(const char *path); Declarado: dos.h, io.h, stdio.h Funci¢n: Borra el fichero especificado por path devolviendo 0. un valor -1 indica error. LIBRERIAS DE TURBO C - errno.h Contiene constantes, tipos de datos y variables globales LIBRERIAS DE TURBO C - fcntl.h Contiene los flags de apertura de ficheros o de funciones similares de librer¡a. Estos flags son: O_APPEND O_RDWR O_BINARY O_TEXT O_CREAT O_TRUNC O_EXCL O_WRONLY O_RDONLY LIBRERIAS DE TURBO C - float.h _clear87() Sintaxis: unsigned int _clear87(void); Declarado: float.h Funci¢n: Inicializa la palabra de estado del coprocesador matem tico 8087/80287. _control87() Sintaxis: unsigned int _control87(unsigned int new, unsigned int mask); Declarado: float.h Funci¢n: Carga o descarga el coprocesador. _fpreset() Sintaxis: void _fpreset(void); Declarado: float.h Funci¢n: Esta funci¢n reinicializa el sistema aritm‚tico de punto flotante. Puede ser necesario inicializar las rutinas de punto flotante despu‚s de ejecutar las funciones system(), exec(), spawn() o signal(). _status87() Sintaxis: unsigned int _status87(void); Declarado: float.h Funci¢n: devuelve el valor de la palabra de estado del coprocesador matem tico. LIBRERIAS DE TURBO C - graphics.h arc() Sintaxis: void far arc(int x, int y, int ang1, int ang2, int rad) Declarado: graphics.h Funci¢n: Dibuja un arco circular en el color en curso con centro en (x, y) y radio rad comenzando en ang1 y terminando en ang2. Cero grados ser¡a a las 3 del reloj y 90 grados a las 12. bar() Sintaxis: void far bar(int izda, int arriba, int dcha, int abajo) Declarado: graphics.h, conio,h Funci¢n: Dibuja una barra rectangular de 2 dimensiones. La barra es rellenada utilizando el color de relleno en curso, definido previamente con la funci¢n setfillpattern(). bar3d() Sintaxis: void far bar3d(int izda, int arriba, int dcha, int abajo, int prof, int flag); Declarado: graphics.h Funci¢n: Dibuja una barra tridimensional y la rellena utilizando la paleta de relleno en curso. La profundidad en pixels viene dada por prof. Si flag no es cero el efecto tridimensional es puesto arriba. circle() Sintaxis: void far circle(int x, int y, int radio); Declarado: graphics.h Funci¢n: Dibuja un circulo en el color actual, con centro en (x, y) y de radio. cleardevice() Sintaxis: void far cleardevice(void); Declarado: graphics.h Funci¢n: Esta funci¢n borra toda la pantalla gr fica, y deja la posici¢n actual en (0, 0). clearviewport() Sintaxis: void far clearviewport(void); Declarado: graphics.h Funci¢n: Limpia la ventana de dibujo en curso dej ndola del color de fondo. La ventana deja de existir despues de la ejecuci¢n de esta funci¢n. closegraph() Sintaxis: void far closegraph(void); Declarado: graphics.h Funci¢n: Restaura el modo que tenia la pantalla antes de ejecutarse initgraph(). Desactiva el entorno gr fico del DOS. detectgraph() Sintaxis: void far detectgraph(int far *g_driver, int far g_modo); Declarado: graphics.h Funci¢n: Establece en g_driver el tipo de adaptador gr fico disponible por el ordenador y escoge en g_modo el modo de mayor resoluci¢n gr fica que da el adaptador. Si se detecta que no hay hardware gr fico g_driver es puesto a -2. Valores para g_driver: -------------------------------------------------- Valor figurativo Valor num‚rico -------------------------------------------------- DETECT 0 (ruega autodetecci¢n) CGA 1 MCGA 2 EGA 3 EGA64 4 EGAMONO 5 IBM8514 6 HERCMONO 7 ATT400 8 VGA 9 PC3270 10 -------------------------------------------------- Valores de g_modo: ------------------------------------------------------- Filas x Tarjeta modo Valor Columnas paleta pag. ------------------------------------------------------- CGA CGAC0 0 320x200 C0 1 CGAC1 1 320x200 C1 1 CGAC2 2 320x200 C2 1 CGAC3 3 320x200 C3 1 CGAHI 4 640x200 2 color 1 MCGA MCGAC0 0 320x200 C0 1 MCGAC1 1 320x200 C1 1 MCGAC2 2 320x200 C2 1 MCGAC3 3 320x200 C3 1 MCGAMED 4 640x200 2 color 1 MCGAHI 5 640x200 2 color 1 EGA EGALO 0 640x200 16 color 4 EGAHI 1 640x350 4 color 2 EGA64 EGA64LO 0 640x200 16 color 1 EGA64HI 1 640x350 4 color 1 EGAMONO EGAMONOHI 3 640x350 2 color 1* EGAMONOHI 3 640x350 2 color 2** HERC HERCMONOHI 0 750x348 2 color 2 ATT400 ATT40C0 0 320x200 C0 1 ATT40C1 1 320x200 C1 1 ATT40C2 2 320x200 C2 1 ATT40C3 3 320x200 C3 1 ATT40MED 4 640x200 2 color 1 ATT40HI 5 640x00 2 color 1 VGA VGALO 0 640x200 16 color 2 VGAMED 1 640x350 16 color 2 VGAHI 2 640x480 16 color 1 PC3270 PC3270HI 0 720x350 2 color 1 IBM8514 IBM8514LO 0 640x480 256 color IBM8514HI 0 1024x768 256 color * 64K en tarjeta EGAMONO ** 256k en tarjeta EGAMONO drawpoly() Sintaxis: void far drawpoly(int num_esquinas, int polypoints) Declarado: graphics.h Funci¢n: Dibuja las l¡neas de salida de un pol¡gono, donde el n£mero de esquinas es num_esquinas y las coordenadas x, y de cada esquina est n en el array polypoints. Por ejemplo: int polypoints[] = {160, 50, 140, 80, 180, 80}; drawpoly(3, polypoints); ellipse() Sintaxis void far ellipse(int x, int y, int ang_comi, int ang_fin, int xradio, int yradio); Declarado: graphics.h Funci¢n: Dibuja un arco el¡ptico en la pantalla gr fica con centro en (x, y) comenzando en ang_comi y terminando en ang_fin. Cero grados ser¡a a las 3 del reloj y 90 grados a las 12. xradio es el radio curvatura a lo largo del eje x (horizontal), e yradio es el radio de curvatura a lo largo del eje y (vertical). fillellipse() Sintaxis: void far fillellipse(int x, int y, int radx, int rady); Declarado: graphics.h Funci¢n: Dibuja y rellena con los colores en curso una elipse con centro en x, y y radx y rady como ejes horizontal y vertical. fillpoly() Sintaxis: void far fillpoly(int numpunt, int far *polipoints); Declarado: graphics.h Funci¢n: Dibuja un pol¡gono de numpunt puntos en el estilo de l¡nea actual. poliponints es un array con los pares de coordenadas de cada punto. floodfill() Sintaxis: void far floodfill(int x, int y, int col_bord); Declarado: graphics.h Funci¢n: Rellena la zona en la que est  situado x, y, siendo el color del borde col_bord. El color de relleno est  especificado por el valor actual de setcolor o por la funci¢n setfillstyle. getarccoords() Sintaxis: void far getarccoords(struct arccoordstype far *arccoords); Declarado: graphics.h Funci¢n: Rellena la estructura apuntada por arccoords con informaci¢n de la £ltima llamada a arc. La estructura arccoordstype es como sigue: struct arccoordstype { int x, y; int xstart, ystart, xend, yend; }; Los miembros de esta estructura son utilizados para especificar el centro (x, y), la posici¢n de comienzo (xstart, ystart) y la posici¢n de finalizaci¢n (xend, yend). getaspectratio() Sintaxis: void far getaspectratio(int far *xasp, int far *yasp); Declarado: graphics.h Funci¢n: Hace los ajustes para poder ver por pantalla c¡rculos perfectos. getbkcolor() Sintaxis: int far getbkcolor(void); Declarado: graphics.h Funci¢n: Devuelve el n£mero de color de fondo. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ» º MACROS ³ VALOR º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄĶ º BLACK ³ 0 º º BLUE ³ 1 º º GREEN ³ 2 º º CYAN ³ 3 º º RED ³ 4 º º MAGENTA ³ 5 º º BROWN ³ 6 º º LIGHTGRAY ³ 7 º º DARKGRAY ³ 8 º º LIGHTBLUE ³ 9 º º LIGHTGREEN ³ 10 º º LIGHTCYAN ³ 11 º º LIGHTRED ³ 12 º º LIGHTMAGENTA ³ 13 º º YELLOW ³ 14 º º WHITE ³ 15 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ getcolor() Sintaxis: int far getcolor(void); Declarado: graphics.h Funci¢n: Devuelve el color actual de dibujo. getdefaultpalette() Sintaxis: void far *far getdefaultpalette(void); Declarado: graphics.h Funci¢n: Busca en la estructura palettetype donde est  contenida la paleta devolviendo un puntero a la paleta actual. getdrivername() Sintaxis: char *far getdrivername(void); Declarado: graphics.h Funci¢n: Devuelve un puntero a una cadena que contiene el nombre del drive gr fico actual. getfillpattern() Sintaxis: void far getfillpattern(char far *patron); Declarado: grphics.h Funci¢n: Copia en memoria el patr¢n de relleno definido. patron es un puntero a una secuencia de 8 bits, que corresponden a 8 pixels del patr¢n. getfillsettings() Sintaxis: void far getfillsettings(struct fillsettingstype far *info); Declarado: graphics.h Funci¢n: Asigna a la estructura apuntada por info el n£mero correspondiente al patr¢n de relleno y el color en curso. La estructura tiene la forma: struct fillsettingstype { int pattern; /* patr¢n de relleno actual */ int color; /* color de relleno actual */ }; Los valores que puede tener el patr¢n son los siguientes: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º MACRO ³ VALOR ³ MODO DE RELLENO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º EMPTY_FILL ³ 0 ³ Color de fondo º º SOLID_FILL ³ 1 ³ Color s¢lido º º LINE_FILL ³ 2 ³ Con lineas º º LTSLASH_FILL ³ 3 ³ Con barras finas º º SLASH_FILL ³ 4 ³ Con barras º º BKSLASH_FILL ³ 5 ³ Con barras invertidas º º LTBKSLASH_FILL ³ 6 ³ Barras invertidas finas º º XHATCH_FILL ³ 8 ³ Rellenar con sombreado º º INTERLEAVE_FILL ³ 9 ³ Rellenar intercalado º º WIDEDOT_FILL ³ 10 ³ Con puntos muy espaciados º º CLOSEDOT_FILL ³ 11 ³ Con puntos agrupados º º USER_FILL ³ 12 ³ Con patr¢n usual º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ getgraphmode() Sintaxis: int far getgraphmode(void); Declarado: graphics.h Funci¢n: Devuelve el modo gr fico actual seleccionado con initgraph o setgraphmode. ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º MACRO ³ VALOR ³ RESOLUCION º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º CGAC0 ³ 0 ³ 320 X 200 º º CGAC1 ³ 1 ³ 320 X 200 º º CGAC2 ³ 2 ³ 320 X 200 º º CGAC3 ³ 3 ³ 320 X 200 º º CGAHI ³ 4 ³ 640 X 200 º º MCGAC0 ³ 0 ³ 320 X 200 º º MCGAC1 ³ 1 ³ 320 X 200 º º MCGAC2 ³ 2 ³ 320 X 200 º º MCGAC3 ³ 3 ³ 320 X 200 º º MCGAMED ³ 4 ³ 640 X 200 º º MCGAHI ³ 5 ³ 640 X 200 º º EGALO ³ 0 ³ 640 X 200 º º EGAHI ³ 1 ³ 640 X 350 º º EGA64LO ³ 0 ³ 640 X 200 º º EGA64HI ³ 1 ³ 640 X 350 º º EGAMONOHI ³ 3 ³ 640 X 350 º º HERCMONOHI ³ 0 ³ 720 X 348 º º ATT400C0 ³ 0 ³ 320 X 200 º º ATT400C1 ³ 1 ³ 320 X 200 º º ATT400C2 ³ 2 ³ 320 X 200 º º ATT400C3 ³ 3 ³ 320 X 200 º º ATT400CMED ³ 4 ³ 640 X 200 º º ATT400CHI ³ 5 ³ 640 X 400 º º VGALO ³ 0 ³ 640 X 200 º º VGAMED ³ 1 ³ 640 X 350 º º VGAHI ³ 2 ³ 640 X 480 º º PC3270HI ³ 0 ³ 720 X 350 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ getimage() þSintaxis:þoid far getimage(int izda, int sup, int dcha, int inf, void far *bitmap); Declarado: graphics.h Funci¢n: Copia una imagen rectangular de bits de la pantalla gr fica en un array de elementos unsigned char apuntado por bitmap. getlinesettings() Sintaxis: void far getlinesettings(struct linesettingstype far *info); Declarado: graphics.h Funci¢n: Asigna a la estructura apuntada por info el tipo de linea en curso. La estructura linesettingstyle tiene la forma siguiente: struct linesettingstyle { int linestyle; unsigned upattern; int thickness; }; El campo linestyle indica el estilo de l¡nea. Contiene uno de los siguientes valores: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º VALOR ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º SOLID_LINE ³ L¡nea continua º º DOTTED_LINE ³ L¡nea punteada º º CENTER_LINE ³ L¡nea centrada º º DASHED_LINE ³ Guiones º º USERBIT_LINE ³ Definida por el usuario º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Si linestyle es igual a USERBIT_LINE, el campo upattern determina como aparece la l¡nea. Cada bit de upattern corresponde a un pixel. Si un bit est  activado, el pixel tambi‚n lo est . El campo thickness puede contener estos valores: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º VALOR ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º NORM_WIDTH ³ 1 pixel de ancho º º THICK_WIDTH ³ 3 pixels de ancho º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ getmaxcolor() Sintaxis: int far getmaxcolor(void); Declarado: graphics.h Funci¢n: Devuelve el m ximo de color disponible del modo gr fico actual que puede ser pasado por la funci¢n setcolor. getmaxx() Sintaxis: int far getmaxx(void); Declarado: graphics.h Funci¢n: Devuelve el m ximo valor que puede ser tomado por la coordenada x en el modo gr fico actual. getmaxy() Sintaxis: int far getmaxy(void); Declarado: graphics.h Funci¢n: Devuelve el m ximo valor que puede ser tomado por la coordenada y en el modo gr fico actual. getmodename() Sintaxis: char far *getmodename(int num_modo); Declarado: graphics.h funci¢n: Devuelve un puntero a una cadena que contiene el nombre del modo gr fico para el n£mero especificado en num_modo. getmoderange() Sintaxis: void far getmoderange(int graphdriver, int far *bajmodo, int far *supmodo); Declarado: graphics.h Funci¢n: Carga el rango y modo gr fico v lido para el driver gr fico indicado en graphdriver, el m¡nimo valor permitido es cargado en bajmodo y el m ximo en supmodo. Los posibles valores de graphdriver son: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ» º MACRO ³ VALOR º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄĶ º DETECT ³ 0 º º CGA ³ 1 º º MCGA ³ 2 º º EGA ³ 3 º º EGA64 ³ 4 º º EGAMONO ³ 5 º º RESERVED ³ 6 º º HERCMONO ³ 7 º º ATT400 ³ 8 º º VGA ³ 9 º º PC3270 ³ 10 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ getpalette() Sintaxis: void far getpalette(struct palettetype far *palette); Declarado: graphics.h Funci¢n: Carga informaci¢n en torno a la paleta actual en la estructura palette de tipo palettetype que tiene la siguiente forma: #define MAXCOLORS 15 struct palettetype { unsigned char size; signed char colors[MAXCOLORS + 1]; }; Esta estructura y la constante MAXCOLORS est n definidas en graphis.h. size contiene el n£mero de colores de la paleta para el modo gr fico actual. getpalettesize() Sintaxis: int far getpalettesize(void); Declarado: graphics.h Funci¢n: Devuelve el n£mero de paletas que pueden ser utilizadas en el modo gr fico actual. getpixel() Sintaxis: unsigned far getpixel(int x, int y); Declarado: graphics.h Funci¢n: Devuelve el color del pixel x, y. gettextsettings() Sintaxis: void far gettextsettings(struct textsettingstype far *texttypeinfo); Declarado: graphics.h Funci¢n: Carga informaci¢n en la estructura texttypeinfo de tipo textsettingstype en torno al texto del modo gr fico actual. La estructura es como sigue: struct textsettingstype { int font; /* tipo */ int direction; /* horizontal o vertical */ int charsize; /* tama¤o */ int horiz; /* justificaci¢n horizontal */ int vert; /* justificaci¢n vertical */ }; El campo font contiene uno de los valores: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º TIPO ³ VALOR ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º DEFAULT_FONT ³ 0 ³ Por defecto 8x8 bits º º TRIPLEX_FONT ³ 1 ³ Triple º º SMALL_FONT ³ 2 ³ Peque¤o º º SANSSERIF ³ 3 ³ Sans serif (o lineal) º º GOTHIC_FONT ³ 4 ³ G¢tico º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ El campo direction de contener el valor HORIZ_DIR para texto horizontal (por defecto) o el valor VERT_DIR para texto vertical. El campo charsize se emplea para calcular los tama¤os de texto. Los campos horiz y vert indican c¢mo se justifica el texto con respecto a la posici¢n del cursor. Pueden contener los valores siguientes: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º MACRO ³ VALOR ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º LEFT_TEXT ³ 0 ³ Posici¢n a la izquierdº º CENTER_TEXT ³ 1 ³ Posici¢n en el centro º º RIGHT_TEXT ³ 2 ³ Posici¢n a la derecha º º BOTTOM_TEXT ³ 3 ³ Posici¢n abajo º º TOP_TEXT ³ 4 ³ Posici¢n arriba º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ getviewsettings() Sintaxis: void far getviewsettings(struct viewporttype far *info); Declarado: graphics.h Funci¢n: Almacena en la estructura apuntada por info la informaci¢n de la ventana en curso. La estructura contiene los elementos siguientes: struct wiewporttype { int left, top, right, bottom; int clipflag; }; getx() Sintaxis: int far getx(void); Declarado: graphics.h Funci¢n: Devuelve el valor de la coordenada x del cursor en la pantalla o en la ventana. gety() Sintaxis: int far getx(void); Declarado: graphics.h Funci¢n: Devuelve el valor de la coordenada y del cursor en la pantalla o en la ventana. graphdefaults() Sintaxis: void far graphdefaults(void); Declarado: graphics.h Funci¢n: borra las opciones gr ficas actuales dejando las de por defecto. Selecciona como ventana la pantalla completa. Mueve la posici¢n del cursor a (0, 0). Selecciona por defecto la paleta, fondo y dibujo. Selecciona font de texto y justificaci¢n por defecto. grapherrormsg() Sintaxis: char *far grapherrormsg(int errorcode); Declarado: graphics.h Funci¢n: Devuelve un puntero a la cadena de mensaje de error asociada a errorcode. Este error se obtiene de una llamada a graphresult(). _graphfreemem() Sintaxis: void far _graphfreemem(void far *ptr, unsigned size); Declarado: graphics.h Funci¢n: Libera memoria previamente asignada con _graphgetmem. _graphgetmem() Sintaxis: void far *far _graphgetmem(unsigned size); Declarado: graphics.h Funci¢n: Esta funci¢n es llamada para disponer memoria para buffers gr ficos. graphresult() Sintaxis: int far graphresult(void); Declarado: graphics.h Funci¢n: Devuelve el c¢digo de error de la £ltima operaci¢n gr fica. Valores retornados: 0 No hay error. -1 (BGI) no instalado. -2 hardware gr fico no detectado. -3 Dispositivo de fichero no encontrado. -4 dispositivo de fichero inv lido -5 No hay espacio en memoria para cargar driver. -6 Fuera de memoria en scan fill. -7 Fuera de memoria en flood fill. -8 Fichero de Font no encontrado -9 No hay espacio para cargar font -10 Modo gr fico no valido -11 Error gr fico -12 Error I/O gr fico -13 Fichero de font no valido -14 Inv lido n£mero de font -15 N£mero de dispositivo no v lido -18 N£mero de versi¢n no valida. imagesize() Sintaxis: unsigned far imagesize(int izda, int sup, int dcha, int abajo); Declarado: graphics.h Funci¢n: Devuelve el n£mero de bytes necesarios para almacenar una imagen de bits. initgraph() Sintaxis: void far initgraph(int far *g_driver, int far *g_modo, char far *path); Declarado: graphics.h Funci¢n: Inicializa el sistema de gr ficos y pone la pantalla en modo gr fico detectado previamente por detectgraph, tambi‚n especifica la v¡a de acceso de los ficheros del controlador de gr ficos. (El Turbo C proporciona ficheros separados para los ocho adaptadores de gr ficos). Si el controlador de gr ficos est  en el directorio por defecto, o si se ha enlazado el controlador de gr ficos al programa, se puede poner simplemente dos pares de comillas ("") los caracteres '\', hay que ponerlos duplicados. Ejemplo: a:\\pp\\antxon Valores para g_driver: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º MACRO ³ VALOR º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º DETECT ³ 0 (autodetecci¢n)º º CGA ³ 1 º º MCGA ³ 2 º º EGA ³ 3 º º EGA64 ³ 4 º º EGAMONO ³ 5 º º IBM8514 ³ 6 º º HERCMONO ³ 7 º º ATT400 ³ 8 º º VGA ³ 9 º º PC3270 ³ 10 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Valores de g_modo: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Filas x º º Tarjeta modo Valor Columnas paleta pag. º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º CGA CGAC0 0 320x200 C0 1 º º CGAC1 1 320x200 C1 1 º º CGAC2 2 320x200 C2 1 º º CGAC3 3 320x200 C3 1 º º CGAHI 4 640x200 2 color 1 º º MCGA MCGAC0 0 320x200 C0 1 º º MCGAC1 1 320x200 C1 1 º º MCGAC2 2 320x200 C2 1 º º MCGAC3 3 320x200 C3 1 º º MCGAMED 4 640x200 2 color 1 º º MCGAHI 5 640x200 2 color 1 º º º º EGA EGALO 0 640x200 16 color 4 º º EGAHI 1 640x350 4 color 2 º º EGA64 EGA64LO 0 640x200 16 color 1 º º EGA64HI 1 640x350 4 color 1 º º EGAMONO EGAMONOHI 3 640x350 2 color 1* º º EGAMONOHI 3 640x350 2 color 2** º º º º HERC HERCMONOHI 0 750x348 2 color 2 º º ATT400 ATT40C0 0 320x200 C0 1 º º ATT40C1 1 320x200 C1 1 º º ATT40C2 2 320x200 C2 1 º º ATT40C3 3 320x200 C3 1 º º ATT40MED 4 640x200 2 color 1 º º ATT40HI 5 640x00 2 color 1 º º º º VGA VGALO 0 640x200 16 color 2 º º VGAMED 1 640x350 16 color 2 º º VGAHI 2 640x480 16 color 1 º º PC3270 PC3270HI 0 720x350 2 color 1 º º IBM8514 IBM8514LO 0 640x480 256 color º º IBM8514HI 0 1024x768 256 color º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ * 64K en tarjeta EGAMONO ** 256k en tarjeta EGAMONO installuserdriver() Sintaxis: int far installuserdriver(char far *nombre, int huge(*detect)(void)); Declarado: graphics.h Funci¢n: -o-o-o-oo-o-o-o-o-o-o-o-o-o-o-o-o-o-oo-o-o-o-o-o-o-o installuserfont() Sintaxis: int far installuserfont(char far *nombre); Declarado: graphics.h Funci¢n: nombre es un path a un fichero de fonts (.CHR). M s de treinta fonts pueden ser instaladas de una vez. line() Sintaxis: void far line(int x1, int y1, int x2, int y2); Declarado: graphics.h Funci¢n: Dibuja una l¡nea entre dos puntos de la pantalla gr fica. linerel() Sintaxis: void far linerel(int dx, int dy); Declarado: graphics.h Funci¢n: Dibuja una l¡nea desde la posici¢n actual del cursor hasta un punto (dx, dy) expresado en coordenadas relativas a la posici¢n actual. lineto() Sintaxis: void far lineto(int x, int y); Declarado: graphics.h Funci¢n: Dibuja una l¡nea desde la posici¢n actual del cursor a el punto cuyas coordenadas son (x, y). moverel() Sintaxis: void far moverel(int dx, int dy); Declarado: graphics.h Funci¢n: Mueve la posici¢n actual del cursor dx pixels en la direcci¢n x y dy pixels en direcci¢n y. moveto() Sintaxis: void far moveto(int x, int y); Declarado: graphics.h Funci¢n: Mueve el cursor a la posici¢n x, y. outtext() Sintaxis: void far outtext(char far *cadena); Declarado: graphics.h Funci¢n: Escribe una cadena en la ventana gr fica, en la posici¢n actual del cursor, utilizando la justificaci¢n, font, direcci¢n y tama¤o actual. outtextxy() Sintaxis: void far outtextxy(int x, int y, char far *cadena); Declarado: graphics.h Funci¢n: Escribe una cadena en la ventana gr fica, en la posici¢n (x,y), utilizando la justificaci¢n, font, direcci¢n y tama¤o actual. pieslice() Sintaxis: void far pieslice(int x, int y, int stangle, int endangle, int radio); Declarado: graphics.h Funci¢n: Dibuja y rellena una rebanada de pastel con centro en x, y, con un radio dado por radio , comenzando en stangle y terminando en endangle. El trozo de tarta es rellenado y dibujado en el color actual. putimage() Sintaxis: void far putimage(int izda, int sup, void far *bitmap, int parm); Declarado: graphics.h Funci¢n: Dibuja un modelo de mapa de bits en la pantalla gr fica. El modelo debe ser un array de unsigned char (por ejemplo) obtenido usando la funci¢n getimage o cre ndolo de alguna otra manera. izda y sup indican la posici¢n de la esquina superior izda del modelo del mapa de bits, y parm es un par metro que especifica como se coloca la imagen de los gr ficos en pantalla. Los par metros y sus significados son los siguientes: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Constante ³ Valor ³ Descripci¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º COPY_PUT ³ 0 ³ Copia directa º º XOR_PUT ³ 1 ³ O-Exclusiva (Borra) º º OR_PUT ³ 2 ³ O-Inclusiva (une) º º AND_PUT ³ 3 ³ Y (cubre) º º NOT_PUT ³ 4 ³ Copia inversa º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ La combinaci¢n de getimage y putimage es ideal para cubrir el dise¤o de ventanas y deshacer zonas editadas de la pantalla de gr ficos. Mientras putimage trabaja bien para dibujar el modelo de mapa de bits en la pantalla, getimage es una funci¢n ineficaz para definir el modelo. putpixel() Sintaxis: void far putpixel(int x, int y, int color); Declarado: graphics.h Funci¢n: Dibuja un punto en (x, y) en el color color. rectangle() Sintaxis: void far rectangle(int izda, int sup, int dcha, int abajo); Declarado: graphics.h Funci¢n: Dibuja un rect ngulo en el estilo de l¡nea actual. (izda,sup) y (dcha,abajo) son las coordenadas de los v‚rtices superior izdo e inferior dcho del rect ngulo. registerbgidriver() registerbgifont() utilidad BGIOBJ La utilidad BGIOBJ convierte los ficheros .BGI y .CHR (drivers gr ficos y tipos de letras) en ficheros .OBJ de forma que se puedad enlazar junto con cualquier programa compilado. La ventaja de emplear ficheros objeto, es que al montar un programa, se conocer  el tama¤o exacto del c¢digo ejecutable. De la otra forma, el driver gr fico, junto con los tipos de letra, se cargan en memoria en tiempo de ejecuci¢n, a medida que los necesita el programa. El formato de la orden es: BGIOBJ Los ficheros objeto se pueden a¤adir a la misma libreria gr fica, emplenado TLIB: TLIB graphics + [+ ...] Los ficheros que se pueden convertir son: CGA.BGI EGAVGA.BGI HERC.BGI ATT.BGI PC3270.BGI IBM8514.BGI TRIP.CHR LITT.CHR SANS.CHR GOTH.CHR Para poder emplear los ficheros .OBJ, ser  necesario indicarle al compilador que se van a emplear estos ficheros, de forma que los pueda montar junto con el programa. Para ello se emplean las funciones registerbgidriver() y registerbgifont(). Con estas funciones se indica al sistema que se emplear n los ficheros listados anteriormente. Ambas funciones necesitan como argumento un nombre simb¢lico (definido en graphics.h) que representa a los gr ficos. Los nombres posibles son: CGA_driver EGAVGA_driver Herc_driver ATT_driver PC3270_driver IBM8514_driver triplex_font small_font sansserif_font gothic_font Las funciones registerbgidriver() y registerbgifont() se deben invocar dentro del programa, antes de initgraph(). La secuencia de trabajo quedar  como sigue: 1. Convertir el fichero Por ejemplo: BGIOBJ HERC BGIOBJ GOTH 2. A¤adirlo a la librer¡a gr fica. Por ejemplo: TLIB GRAPHICS+HERC+GOTH 3. Si no se han incluido los m¢dulos objeto en la librer¡a, se compilan junto con el programa fuente (o se a¤aden al fichero de proyecto). Por ejemplo: TCC prog-fuente GRAPHICS.LIB HERC.OBJ GOTH.OBJ 4. En el programa se incluir n las llamadas a registerbgidriver() y registerbgifont(). Por ejemplo: if(registerbgidriver(Herc_driver)<0) { fprintf(stderr,"Error al registrar el driver"); exit(1); } if(registerbgifont(gothic_font)<0) { fprintf(stderr,"Error al registrar tipo deletra"); exit(2); } Si al compilar o montar el programa aparece el error Segment exceeds 64k, ser  necesario convertir el fichero con la opci¢n /F. Con esta opci¢n se emplea un nuevo segmento para los ficheros gr ficos. En este caso, a los nombre simb¢licaos se les a¤ade la palabra _far, y las funciones para registrar m¢dulos gr ficos ser n registerfarbgidriver() y registerfarbgifont(). restorecrtmode() Sintaxis: void far restorecrtmode(void); Declarado: graphics.h Funci¢n: Restaura el modo de video al modo anterior a la llamada a initgraph(). sector() Sintaxis: void far sector(int x, int y, int comang, int endang, int radx, int rady); Declarado: graphics.h Funci¢n: Dibuja y rellena un trozo el¡ptico de tarta con centro en (x, y) radx y rady son el radio horizontal y vertical, comenzando a dibujarse en comang y terminando en endang. 0 grados ser¡a a las 3 del reloj y 90 grados a las 12. setactivepage() Sintaxis: void far setactivepage(int pag); Declarado: graphics.h Funci¢n: Define la p gina de la pantalla que recibir  la salida de las funciones gr ficas. Por defecto, se emplea la p gina 0. Si se utiliza otro n£mero, toda la salida ir  a la nueva p gina. En modo gr fico, solo las tarjetas EGA y VGA soportan m s de una p gina, aunque no en todos los modos se puede trabajar con varias p ginas. setallpalette() Sintaxis: void far setallpalette(struct palettetype far *paleta); Declarado: graphics.h Funci¢n: Se emplea para cambiar los colores de la paleta de colores de un tarjeta EGA/VGA. La estructura palettetype es la siguiente: struct palettetype { unsigned char size; signed char colors[16]; } Se debe asignar a cada color de la tabla su nuevo valor. La tabla de colores se indica en la funci¢n setpalette(). setaspectratio() Sintaxis: void far setaspectratio(int xasp, int yasp); Declarado: graphics.h Funci¢n: Cambia el factor de correcci¢n de aspecto ratio. setbkcolor() Sintaxis: void far setbkcolor(int color); Declarado: graphics.h Funci¢n: Modifica el color de fondo. El argumento color tiene los siguientes valores: ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º N£mero ³ Nombre º N£mero ³ Nombre º ÇÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º 0 ³ BLACK º 8 ³ DARKGRAY º º 1 ³ BLUE º 9 ³ LIGHTBLUE º º 2 ³ GREEN º 10 ³ LIGHTGREEN º º 3 ³ CYAN º 11 ³ LIGHTCYAN º º 4 ³ RED º 12 ³ LIGHTRED º º 5 ³ MAGENTA º 13 ³ LIGHTMAGENTA º º 6 ³ BROWN º 14 ³ YELLOW º º 7 ³ LIGHTGRAY º 15 ³ WHITE º ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ NOTA: Si se utiliza una tarjeta VGA o EGA, y se cambia el color de paleta con setpalette o setallpalette, la constante simb¢lica, puede no dar el color correcto. setcolor() Sintaxis: void far setcolor(int color); Declarado: graphics.h Funci¢n: Establece el color de trazado de gr ficos. Color puede ser uno de los valores indicados en la funci¢n setpalette(). setfillpattern() Sintaxis: void far setfillpattern(char far *modelo, int color); Declarado: graphics.h Funci¢n: Establece el relleno del modelo definido por el usuario. modelo es un puntero a una secuencia de 8 bytes, cada byte corresponde a 8 pixels en la paleta. Siempre que un bit de la paleta vale 1, el pixel correspondiente es dibujado. El relleno ir  coloreado en el color indicado por color. setfillstyle() Sintaxis: void far setfillstyle(int modelo, int color); Declarado: graphics.h Funci¢n: Establece el estilo de relleno. modelo podr  ser: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Nombre ³Valor³ Descripci¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º EMPTY_FILL ³ 0 ³ Relleno con el color de fondo º º SOLID_FILL ³ 1 ³ Relleno s¢lido º º LINE_FILL ³ 2 ³ Relleno con ÄÄÄÄ º º LTSLASH_FILL ³ 3 ³ Relleno con //// º º SLASH_FILL ³ 4 ³ Relleno con ////, l¡nea gruesa º º BKSLASH_FILL ³ 5 ³ Relleno con \\\\, l¡nea gruesa º º LTBKSLASH_FILL ³ 6 ³ Relleno con \\\\ º º HATCH_FILL ³ 7 ³ Relleno de l¡neas brillantes º º XHATCH_FILL ³ 8 ³ L¡neas gruesas cruzadas º º INTERLEAVE_FILL³ 9 ³ Relleno de basura º º WIDE_DOT_FILL ³ 10 ³ Punteado muy espaciado º º CLOSE_DOT_FILL ³ 11 ³ Punteado muy cerrado. º º USER_FILL ³ 12 ³ Modo definido por la paleta º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ setgraphbufsize() Sintaxis: unsigned far setgraphbufsize(unsigned tama¤o); Declarado: graphics.h Funci¢n: Cambia el tama¤o del buffer interno para gr ficos tama¤o. Esta funci¢n devuelve el valor previo de tama¤o del buffer. setgraphmode() Sintaxis: void far setgraphmode(int modo); Declarado: graphics.h Funci¢n: Define el modo gr fico especificado en modo. los valores de modo se explican con la funci¢n initgraph(). setlinestyle() Sintaxis: void far setlinestyle(int estilo, unsigned upattern, int densidad); Declarado: graphis.h Funci¢n: Selecciona estilo y anchura de l¡nea. estilo puede ser: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Nombre ³ Valor ³ Descripci¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º SOLID_LINE ³ 0 ³ L¡nea s¢lida º º DOTTED_LINE ³ 1 ³ L¡nea punteada º º CENTER_LINE ³ 2 ³ L¡nea centrada º º DASHED_LINE ³ 3 ³ L¡nea larga º º USERBIT_LINE ³ 4 ³ Definido por usuario. º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ densidad puede ser: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Nombre ³ Valor ³ Descripci¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º NORM_WIDTH ³ 1 ³ 1 pixel de anchura º º THICK_WIDTH ³ 3 ³ 3 pixel de anchura º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ upattern es un formato de 16 bits que se aplica solo si estilo = 4 setpalette() Sintaxis: void far setpalette(int index, int color); Declarado: graphics.h Funci¢n: Define los colores de la pantalla. El argumento color toma los valores siguentes: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º CGA º EGA/VGA º º Nombre Valor º Nombre Valor º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ×ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄĶ º BLACK ³ 0 º EGA_BLACK ³ 0 º º BLUE ³ 1 º EGA_BLUE ³ 1 º º GREEN ³ 2 º EGA_GREEN ³ 2 º º CYAN ³ 3 º EGA_CYAN ³ 3 º º RED ³ 4 º EGA_RED ³ 4 º º MAGENTA ³ 5 º EGA_MAGENTA ³ 5 º º BROWN ³ 6 º EGA_BROWN ³ 20 º º LIGHTGRAY ³ 7 º EGA_LIGHTGRAY ³ 7 º º DARKGRAY ³ 8 º EGA_DARKGRAY ³ 56 º º LIGHTBLUE ³ 9 º EGA_LIGHTBLUE ³ 57 º º LIGHTGREEN ³ 10 º EGA_LIGHTGREEN ³ 58 º º LIGHTCYAN ³ 11 º EGA_LIGHTCYAN ³ 59 º º LIGHTRED ³ 12 º EGA_LIGHTRED ³ 60 º º LIGHTMAGENTA ³ 13 º EGA_LIGHTMAGENTA ³ 61 º º YELLOW ³ 14 º EGA_YELLOW ³ 62 º º WHITE ³ 15 º EGA_WHITE ³ 63 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍͼ Nota: Para que el color sea v lido depende del modo gr fico actual. El argumento index se refiere a la posici¢n de una tabla donde Turbo C selecciona los colores. Los colores de fondo siempre tienen el ¡ndice 0. Con una tarjeta EGA se pueden escribir 16 colores a la vez y admite un total de 64 colores. Se emplea la funci¢n setpalette() para relacionar un color con un ¡ndice. Por ejemplo: setpalette(0, RED); modifica el color de fondo a rojo, y setpalette(3, EGA_BLACK); asigna el ¡ndice 3 a EGA_BLACK (negro) setrgbpalette() Sintaxis: void far setrgbpalette(int colornum, int rojo, int verde, int azul); Declarado: graphics.h Funci¢n: Concede la definici¢n de colores para la tarjeta gr fica IBM8514. settextjustify() Sintaxis: void far settextjustify(int horiz, int vert); Declarado: graphics.h Funci¢n: Selecciona la justificaci¢n del texto para las funciones gr ficas. Por defecto la justificaci¢n seleccionada es LEFT_TEXT (para horizontal) y TOP_TEXT (para vertical). Los valores disponibles para horiz y vert son: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Nombre ³ Valor ³ Descripci¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º LEFT_TEXT ³ 0 ³ horiz º º CENTER_TEXT ³ 1 ³ horiz y vert º º RIGHT_TEXT ³ 2 ³ horiz º º BOTTOM_TEXT ³ 0 ³ vert º º TOP_TEXT ³ 2 ³ vert º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ settextstyle() Sintaxis: void far settextstyle(int fuente, unsigned direcci¢n, int tama¤o); Declarado: graphics.h Funci¢n: Especifica la fuente de texto (tipo de letra), la direcci¢n y el tama¤o. fuente es el valor entero (o constante simb¢lica) dado en la siguiente tabla: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Constante ³ Valor ³ Descripci¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º DEFAULT_FONT ³ 0 ³ Font de trazado 8x8 bits º º TRIPLEX_FONT ³ 1 ³ Font de trazado triple º º SMALL_FONT ³ 2 ³ Font de trazado reducido º º SANS_SERIF_FONT ³ 3 ³ Font de trazado sin serifº º GOTHIC_FONT ³ 4 ³ Font de trazado G¢tico º º ³ ³ º º HORIZ_DIR ³ 0 ³ izda a dcha en horizontalº º VERT_DIR ³ 1 ³ abajo a arriba vertical º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ direcci¢n es un entero que indica la direcci¢n del texto (0=horizontal, 1=vertical) tama¤o es un entero (en el rango de 1 a 10) para ajust r el tama¤o de la fuente. setusercharsize() Sintaxis: void far setuserc arsize(int multx, int divx, int multy, int divy); Declarado: graphics.h Funci¢n: Afina el control sobre el tama¤o del texto de las fonts utilizadas en las funciones gr ficas. Los valores seleccionados por setusercharsize se activan solo si charsize es igual a 0, puesto en una llamada previa a settextstyle. Con esta funci¢n se especifica el factor que regula la escala de anchura y altura. dicho de otra forma, multiplica las coordenadas de cada car cter escrito en la pantalla de modo gr fico, de la siguiente forma: x = x*mulx/divx y = y*muly/divy setviewport() Sintaxis: void far setviewport(int izda, int sup, int dcha, int abajo, int banderacorte) Declarado: graphics.h Funci¢n: Establece una nueva ventana de dibujo. izda, sup son la esquina superior izda de la ventana; dcha, abajo son la esquina inferior derecha; y banderacorte establece la bandera corte. Si banderacorte es 0 el corte est  en off y la salida de gr ficos, que ir¡a mas all  de los l¡mites de la ventana de dibujo, es ignorada totalmente (no se muestra ning£n dibujo); si vale 1, el corte est  en on y la salida de gr ficos, que ir¡a m s all  de los l¡mites de la ventana de dibujo, es truncada en los l¡mites (pero se muestra la parte del dibujo interior a la ventana de dibujo). setvisualpage() Sintaxis: void far setvisualpage(int p gina); Declarado: graphics.h Funci¢n: Selecciona la p gina de video a visualizar. setwritemode() Sintaxis: void far setwritemode(int modo); Declarado: graphics.h Funci¢n: Selecciona el modo de escritura de una l¡nea en una p gina gr fica COPY_PUT = 0 /* MOV */ XOR_PUT = 1 /* XOR */ Cada una de estas constantes corresponde a una operaci¢n binaria entre cada byte en la l¡nea y el correspondiente byte en la pantalla. COPY_PUT utiliza la instrucci¢n MOV de emsamblador, sobrescribiendo sobre cualquier cosa que haya el la misma l¡nea de la pantalla. XOR_PUT utiliza el comando XOR para borrar la l¡nea y restaurar la pantalla a su apariencia original. textheight() Sintaxis: int far textheight(char far *textcad); Declarado: graphics.h Funci¢n: Devuelve la altura en pixels de la font actual. textwidth() Sintaxis: int far textwidth(char far *cadtext); Declarado: graphics.h Funci¢n: Devuelve la anchura de la cadena de texto cadtext en pixels en la font y modo actual. LIBRERIAS DE TURBO C - io.h access() Sintaxis: int access(const char *nomfichero, int modo) Declarado: io.h Funci¢n: Se emplea para para averiguar si un fichero existe. Tambi‚n se puede utilizar para ver si el fichero est  protegido contra escritura y si es ejecutable. El argumneto nomfichero apunta al nombre del fichero. El valor modo determina como funciona access(). Los valores posibles son: 0 Comprueba la existencia del fichero 1 Comprueba si es un fichero ejecutable 2 Comprueba la escritura 4 Comprueba la lectura 6 Comprueba la escritura y lectura. La funci¢n access() devuelve 0 si se puede acceder al fichero; en caso contrario, devuelve -1 y a la variable global errno se le asigna uno de los valores: ENOENT Camino o nombre de fichero no encontrado EACCES Acceso denegado _chmod() Sintaxis: #include #include int _chmod(const char *path, int func[, int atrib]); Declarado: io.h Funci¢n: Cambia el modo de acceso a un fichero. Si func es 0, la funci¢n devuelve el atributo actual del fichero, Si es 1, el atributo es cambiado a atrib. atrib puede ser una de las siguientes constantes simb¢licas: FA_RDONLY atributo de solo lectura. FA_HIDDEN " " archivo oculto. FA_SYSTEM " " " sistema. chmod() Sintaxis: #include int chmod(const char *path, int pmodo); Declarado: io.h Funci¢n: Cambia el permiso que tiene el fichero especificado en path por el especificado en pmodo, devolviendo 0 en caso exitoso, y -1 en caso de error. Los valores que puede tomar pmodo son: S_IWRITE permiso de escritura S_IREAD permiso de lectura. S_IWRITE | S_IREAD lectura y escritura chsize() Sintaxis: int chsize(int num, long n); Declarado: io.h Funci¢n: Extiende o trunca el fichero cuyo n£mero asociado es num, a la longitud especificada por n. El fichero debe ser abierto de forma que permita la escritura. Si el fichero es extendido, se a¤aden caracteres nulos ('\0'). _close() Sintaxis: int _close(int num); Declarado: io.h Funci¢n: Esta funci¢n cierra el fichero asociado con num. close() Sintaxis: int _close(int num); Declarado: io.h Funci¢n: Esta funci¢n cierra el fichero asociado con num. _creat() Sintaxis: #include int _creat(const char *path, int atrib); Declarado: io.h Funci¢n: Crea un nuevo fichero o reescribe en uno ya existente. Si el fichero ya existe, su tama¤o es puesto a 0. El argumento atrib puede ser uno de los siguientes: FA_RDONLY Solo lectura FA_HIDDEN Oculto FA_SYSTEM Del sistema. Si no hay error devuelve el numero del fichero creado, en caso contrario devuelve -1. creat() Sintaxis: #include int creat(const char *path, int amode); Declarado: io.h Funci¢n: Crea un nuevo fichero o prepara para reescribir en uno existente. El argumento amode puede ser: S_IWRITE permiso de escritura. S_IREAD permiso de lectura. S_READ|S_IWRITE permiso de lectura y escritura. Si no hay error devuelve el numero del fichero creado, en caso contrario devuelve -1. creatnew() Sintaxis: #include int creatnew(const char *path, int atrib); Declarado: io.h Funci¢n: Esta funci¢n es id‚ntica a _creat, con la excepci¢n de que si el fichero existe, creatnew devuelve error y deja el fichero intacto. El argumento atrib debe ser uno de los siguientes: FA_RDONLY atributo de solo lectura FA_HIDDEN archivo oculto FA_SYSTEM archivo del sistema. Si no hay error devuelve el numero del fichero creado, en caso contrario devuelve -1. creattemp() Sintaxis: #include int creattemp(char *path, int atrib); Declarado: io.h Funci¢n: Crea un £nico fichero en el directorio asociado con path. Es creado en el modo especificado por la variable global _fmode (O_TEXT o O_BINARY). El fichero es borrado automaticamente cuando el termina el programa. El argumento atrib debe ser uno de los siguientes: FA_RDONLY atributo de solo lectura FA_HIDDEN archivo oculto FA_SYSTEM archivo del sistema. Si no hay error devuelve el numero del fichero creado, en caso contrario devuelve -1. dup() Sintaxis: int dup(int handle); Declarado io.h Funci¢n: Da un nuevo n£mero al fichero de n£mero actual handle, en caso de error da -1. dup2() Sintaxis: int dup2(int oldhandle, int newhandle); Declarado: io.h Funci¢n: Duplica un n£mero de fichero (oldhandle) sobre un n£mero de fichero existente (newhandle). Si tiene ‚xito esta funci¢n devuelve 0, en caso contrario -1. eof() Sintaxis: int eof(int handle); Declarado: io.h Funci¢n: Esta funci¢n devuelve 1 si se ha llegado al final del fichero, en caso contrario devuelve 0. Un valor -1 indica error. filelength() Sintaxis: long filelength(int pf); Declarado: io.h Funci¢n: Devuelve la longitud en bytes del fichero asociado a pf, en caso de error devuelve -1. getftime() Sintaxis: int getftime(int handle, struct ftime *ftimep); Declarado: io.h Funci¢n: Carga fecha y hora del fichero de disco asociado con handle, en la estructura ftimep de tipo ftime que es de la forma siguiente. struct ftime { unsigned ft_tsec:5; /* dos segundos */ unsigned ft_min:6; /* minutos */ unsigned ft_hour:5; /* horas */ unsigned ft_day:5; /* d¡as */ unsigned ft_month:4; /* meses */ unsigned ft_year:5; /* a¤o-1980 */ }; ioctl() Sintaxis: int ioctl(int handle, int func[, void *argdx, int argcx]); Declarado: io.h Funci¢n: Controla el dispositivo de I/O. isatty() Sintaxis: int isatty(int num); Declarado: io.h Funci¢n: Determina si num est  asociado con un dispositivo (consola, impresora, puerto serie etc.). Devuelve un valor distinto de 0 si num est  asociado a un dispositivo y 0 en caso contrario. lock() Sintaxis: int lock(int handle, long offset, long length); Declarado: io.h Funci¢n: Se utiliza para bloquear una parte de un fichero, para prevenir que otro programa lo utilice. Para desbloquear el fichero se emplea unlock(). Estas funciones permiten controlar los ficheros en redes locales. La zona del fichero que se protege viene dada por el desplazamiento y el n£mero de caracteres. Si no hay errores, devuelve 0; en caso contrario devuelve -1. lseek() Sintaxis: long lseek(int num, long desp, int pos); Declarado: io.h Funci¢n: Mueve el puntero de L/E asociado con el fichero abierto con el numero num, a una nueva localizaci¢n desplazada desp bytes de pos. pos puede ser: ÉÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Pos ³Valor ³ Definici¢n º ÇÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º SEEK_SET ³ 0 ³ Principio del fichero º º SEEK_CUR ³ 1 ³ Posici¢n actual º º SEEK_END ³ 2 ³ Final del fichero º ÈÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ En caso de error, esta funci¢n devuelve -1. int open(char *nomfich, int modo, int acceso); int _open(char *nomfich, int modo); Declarado: io.h Funci¢n: Se emplea para abrir un fichero y obtener el descriptor asociado. El argumento modo es una de las siguientes macros: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍ» º MODO ³ EFECTO ³ VALOR º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄĶ º O_RDONLY ³ s¢lo lectura ³ 1 º º O_WRONLY ³ s¢lo escritura ³ 2 º º O_RDWR ³ lectura y escritura ³ 3 º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍͼ El argumento acceso se utiliza para mantener la compatibilidad con el entorno UNIX. La funci¢n open() devuelve un valor positivo si no hay errores; en caso contrario, devuelve -1. El valor positivo ser  el descriptor asociado al fichero. Los modos se pueden complementar con otras macros: O_TEXT Fichero de texto. Se realizan las conversiones siguientes: al leer 0x0d0a -> 0x0a al escribir 0x0a->0x0d0a el fin fichero es 0x1a (CTRL+Z) O_BINARY Fichero binario. no hay conversiones O_APPEND Escritura a final de fichero O_CREAT Si no existe, se crea. en este caso se puede emplear el argumento de acceso con los valores siguientes: S_IREAD S¢lo lectura S_IWRITE S¢lo escritura S_IWRITE|S_IREAD O_TRUNC Vacia un fichero ya existente _read() Sintaxis: int _read(int num, void *buf, unsigned c); Declarado: io.h Funci¢n: Intenta leer c bytes del fichero cuyo n£mero asociado es num, y almacenarlos en buf. Esta funci¢n devuelve el n£mero de bytes le¡dos, en caso de encontrar el final de fichero devuelve 0, un valor -1 indica error. Para un fichero abierto en modo de texto, _read no traslada los retornos de carro. Esta funci¢n utiliza el sistema de llamadas directas del DOS. read() Sintaxis: int read(int num, void *buf, unsigned c); Declarado: io.h Funci¢n: Intenta leer c bytes del fichero cuyo n£mero asociado es num, y almacenarlos en buf. Esta funci¢n devuelve el n£mero de bytes le¡dos, en caso de encontrar el final de fichero devuelve 0, un valor -1 indica error. Para un fichero abierto en modo de texto, _read si traslada los retornos de carro. setftime() Sintaxis: int setftime(int handle, struct ftime *lista); Declarado: io.h Funci¢n: Carga la fecha y hora del fichero de disco asociado con handle en la estructura lista de tipo ftime, que es como sigue: struct ftime { unsigned ft_tsec:5; /* dos segundos */ unsigned ft_min:6; /* minutos */ unsigned ft_hour:5; /* horas */ unsigned ft_day:5; /* d¡a */ unsigned ft_month:4; /* mes */ unsigned ft_year:7 /* a¤o */ }; En caso de error, esta funci¢n devuelve -1. setmode() Sintaxis: int setmode(int num, int modo); Declarado: io.h Funci¢n: Asigna el modo de texto (O_TEXT) o el modo binario (O_BINARY) al fichero cuyo n£mero asociado es num. Devuelve el modo anterior, -1 indica error. sopen() Sintaxis: int sopen(char *path, int acceso, int shflag, int modo); Declarado: io.h Funci¢n: Abre el fichero especificado por path y lo prepara a modo compartido para lectura y/o escritura. Para m s informaci¢n leer el manual. tell() Sintaxis: long tell(int num); Declarado: io.h Funci¢n: Devuelve la posici¢n actual del puntero de L/E, dentro del fichero cuyo numero asociado es num. Esta posici¢n es relativa al principio. unlink() Sintaxis: int unlink(const char *path); Declarado: dos.h, io.h, stdio.h Funci¢n: Borra el fichero especificado por path devolviendo 0. un valor -1 indica error. unlock() Sintaxis: int unlock(int handle, long offset, long length); Declarado: io.h Funci¢n: Provee de un interface con el DOS 3.x para utilizar un fichero en modo compartido. Elimina el bloqueo hecho con la llamada lock(). _write() Sintaxis: int _write(int fd, void *buf, unsigned len); Declarado: io.h Funci¢n: Escribe len bytes, almacenados en buf, en el fichero cuyo n£mero asociado es fd. Retorna el n£mero de bytes escritos, -1 indica error. Esta funci¢n es exclusiva del DOS. write() Sintaxis: int write(int fd, void *buf, unsigned len); Declarado: io.h Funci¢n: Escribe len bytes, almacenados en buf, en el fichero cuyo n£mero asociado es fd. Retorna el n£mero de bytes escritos, -1 indica error. Esta funci¢n es compatible UNIX. LIBRERIAS DE TURBO C - limits.h En esta libreria est n definidas las siguientes constantes: CHAR_BIT N§ de bits en un char CHAR_MAX M ximo valor char CHAR_MIN M¡nimo valor char INT_MAX M ximo valor int INT_MIN M¡nimo valor int LONG_MAX M ximo valor long LONG_MIN M¡nimo valor long SCHAR_MAX M ximo valor char SCHAR_MIN M¡nimo valor char SHRT_MAX M¡nimo valor short SHRT_MIN M¡nimo valor short UCHAR_MAX M ximo valor unsigned char UINT_MAX M ximo valor unsigned int ULONG_MAX M ximo valor unsigned long USHRT_MAX M ximo valor unsigned short LIBRERIAS DE TURBO C - math.h abs() Sintaxis: int abs(int x); Funci¢n: Devuelve el valor absoluto del entero x que va como argumento. acos() Sintaxis: double acos(double x); Declarado: math.h Funci¢n: Devuelve el arco coseno del valor introducido como par metro, este argumento debe estar comprendido entre -1 y 1 de lo contrario la funci¢n devolver  0 y pondr  errno a EDOM Domain error. asin() Sintaxis: double asin(double x); Declarado: math.h Funci¢n: Devuelve el arco seno del argumento. Este argumento debe tener un valor comprendido entre -1 y 1. En caso de error la funci¢n devuelve 0 y pone errno a EDOM Domain error. Esta funci¢n devuelve un valor comprendido entre el rango -pi/2 a pi/2. atan() Sintaxis: double atan(double x); Declarado: math.h Funci¢n: Calcula el arco tangente del argumento. Devuelve un valor comprendido entre -pi/2 y pi/2. atan2() Sintaxis: double atan2(double x, double y); Declarado: math.h Funci¢n: Devuelve el arco tangente de y/x. atof() Sintaxis: double atof(char *s); Declarado: math.h, stdlib.h Funci¢n: Convierte la cadena apuntada por s en un double. cabs() Sintaxis: double cabs(struct complex z); Declarado: math.h Funci¢n: Calcula el valor absoluto del n£mero complejo z, este es una estructura tipo complex definida en math.h de la siguiente forma: struct complex { double x, y; }; Donde x es la parte real e y la imaginaria. ceil() Sintaxis: double ceil(double x); Declarado: math.h Funci¢n: Devuelve como resultado un valor double, que representa al entero m s peque¤o que es mayor o igual a x. cos() Sintaxis: double cos(double x); Declarado: math.h Funci¢n: Calcula el coseno del argumento. El  ngulo debe estar en radianes. cosh() Sintaxis: double cosh(double x); Declarado: math.h Funci¢n: Calcula el coseno hiperb¢lico del argumento. exp() Sintaxis: double exp(double x); Declarado: math.h Funci¢n: Calcula el valor de e elevado a x y devuelve su valor. fabs() Sintaxis: double fabs(double x); Declarado: math.h Funci¢n: Retorna el valor absoluto de x. floor() Sintaxis: double floor(double x); Declarado: math.h Funci¢n: Da como resultado un valor double que representa el entero m s grande que es menor o igual a x. fmod() Sintaxis: double fmod(double x, double y); Declarado: math.h Funci¢n: Devuelve el resto de x/y. frexp() Sintaxis: double frexp(double x, int *exponente); Declarado: math.h Funci¢n: Calcula la mantisa que elevada a exponente sea igual a x y devuelve su valor. hypot() Sintaxis: double hypot(double x, double y); Declarado: math.h Funci¢n: Dados los catetos calcula la hipotenusa. labs() Sintaxis: long int labs(long int x); Declarado: math.h Funci¢n: Devuelve el valor absoluto del long x. ldexp() Sintaxis: double ldexp(double x, int exp); Declarado: math.h Funci¢n: Calcula Xù2exp y devuelve su resultado. log() Sintaxis: double log(double x); Declarado: math.h Funci¢n: Devuelve el logaritmo natural de x. log10() Sintaxis: double log10(double x); Declarado: math.h Funci¢n: Devuelve el logaritmo en base 10 de x. _matherr() Sintaxis: double _matherr(_mexcep why, char *fun, double *arg1p, double *arg2p, double retval); Declarado: math.h Funci¢n: Se utiliza para enfocar el error en punto flotante. matherr() Sintaxis: int matherr(struct exception *e); Declarado: math.h Funci¢n: Es llamado por la rutina _matherr para numerar el error generado en la librer¡a matem tica. modf() Sintaxis: double modf(double x, double *i); Declarado: math.h Funci¢n: Descompone x en sus partes entera y fraccionaria. Devuelve la parte fraccionaria y sit£a la parte entera en la variable apuntada por i. poly() Sintaxis: double poly(double x, int grad, double coef[]); Declarado: math.h Funci¢n: Genera un polinomio in x, de grado grad y coeficientes coef[0], coef[1], ..., coef[grad]. Por ejemplo, si grad=4 el polinomio generado ser¡a: coef[4]x4 + coef[3]x3 + coef[2]x2 + coef[1]x + coef[0] Esta funci¢n devolver  el valor del polinomio para el valor dado de x. pow() Sintaxis: double pow(double x, double y); Declarado: math.h Funci¢n: Devuelve el valor de xy. pow10() Sintaxis: double pow10(double p); Declarado: math.h Funci¢n: Devuelve el valor de 10p. sin() Sintaxis: double sin(double x); Declarado: math.h Funci¢n: Esta funci¢n calcula el seno de x, x debe estar especificado en radianes. sinh() Sintaxis: double sinh(double x); Declarado: math.h Funci¢n: Esta funci¢n calcula el seno hiperb¢lico de x. sqrt() Sintaxis: double sqrt(double x); Declarado: math.h Funci¢n: Calcula la ra¡z cuadrada positiva de x. tan() Sintaxis: double tan(double x); Declarado: math.h Funci¢n: Devuelve la tangente del  ngulo x expresado en radianes. tanh() Sintaxis: double tanh(double x); Declarado: math.h Funci¢n: Devuelve la tangente hiperb¢lica del n£mero real x. LIBRERIAS DE TURBO C - mem.h memccpy() Sintaxis: void *memccpy(void *dest, const void *src, int ch, size_t n); Declarado: string.h, mem.h Funci¢n: Copia un bloque de n bytes desde scr en dest. La copia termina cuando se han pasada n byts, o cuando se ha copiado el caracter ch. memchr() Sintaxis: void *memchr(const void *s, int c, size_t n); Declarado: string.h, mem.h Funci¢n: Busca en los primeros n bytes del bloque apuntado por s el car cter c. Devuelve un puntero a la primera aparici¢n de c, o un puntero nulo si no aparece. memcmp() Sintaxis: int memcmp(const void *s1, const void *s2, size_t n); Declarado: string.h, mem.h Funci¢n: Compara los n primeros bytes de los bloques s1 y s2 devolviendo < 0 si s1 < s2, = 0 si s1 = s2, > 0 si s1 > s2. memcpy() Sintaxis: void *memcpy(void *hacia, void *desde, size_t cuenta); Declarado: string.h, mem.h Funci¢n: Copia cuenta caracteres del array apuntado por desde en array apuntado por hacia. La funci¢n devuelve un puntero a hacia. memicmp() Sintaxis: int memicmp(const void *s1, const void *s2, size_t n); Declarado: string.h, mem.h Funci¢n: Compara los n primeros bytes de las cadenas de caracteres s1 y s2 ignorando may£sculas y min£sculas. Devuelve: < 0 si s1 < s2. = 0 si s1 = s2 > 0 si s1 > s2. memmove() Sintaxis: void *memmove(void *dest, const void *scr, size_t n); Declarado: string.h, mem.h Funci¢n: Copia un bloque de n bytes desde src en dest. Devuelve un puntero a dest. Si las matrices se solapan, la copia se realiza correctamente, poniendo el contenido en destino y modificando origen. memset() Sintaxis: void *memset(void *buf, int ch, size_t cuenta); Declarado: string.h, mem.h Funci¢n: Copia el byte menos significativo de ch en los primeros cuenta caracteres del array apuntado por buf, devolviendo un puntero a buf. movedata() Sintaxis: void movedata(unsigned srcseg, unsigned srcoff, unsigned dstseg, unsigned dstoff, size_t n); Declarado: string.h, mem.h Funci¢n: Copia n bytes desde (srcseg:srcoff) a (dstseg:dstoff). movmem() Sintaxis: void movmem(void *src, void *dest, unsigned tama¤o); Declarado: mem.h Funci¢n: Copia un bloque de tama¤o bytes desde src a dest. setmem() Sintaxis: void setmem(void *dest, unsigned longitud, char valor); Declarado: mem.h Funci¢n: Rellena un bloque de longitud bytes, apuntado por dest, por el byte valor. LIBRERIAS DE TURBO C - process.h exec..() Sintaxis: int execl(path, arg0, arg1, ... , NULL); int execle(path, arg0, arg1, ... , NULL, envp); int execlp(path, arg0, arg1, ... , NULL); int execlpe(path, arg0, arg1, ... , NULL, envp); int execv(path, argv); int execve(path, argv, envp); int execvp(path, argv); int execvee(path, argv, envp); char *path; char *arg0, *arg1, ...; char *argv[]; char *envp[]; Declarado: process.h Funci¢n: Esta funci¢n carga un nuevo proceso o programa y lo ejecuta. A continuaci¢n del nombre de la funci¢n exec se a¤ade unas letras para especificar una determinada variaci¢n: Letra Variaci¢n --------------------------------------------------------- p Utiliza la variable PATH para encontrar el fichero a ejecutar. l Lista separada de argumentos. El argumento arg0 es normalmente un puntero a path. v Pasa al proceso a ejecutar un array de punteros (argv) a los argumentos. El argumento argv[0] es normalmente un puntero a path. e Pasa al proceso a ejecutar un array de punteros (envp) a las variables que permiten alterar el entorno del proceso. Cada elemento de envp, excepto el elemento final, apunta a una cadena de la forma: NOMBRE = valor Donde NOMBRE es el nombre de la variable y valor es la cadena de caracteres asociada. El £ltimo elemento es NULL. La funci¢n exec devuelve -1 si ocurre un error y la variable errno es puesta al valor correspondiente. _exit() Sintaxis: void _exit(int status); Declarado: process.h, stdlib.h Funci¢n: Termina le ejecuci¢n de un programa cerrando todos los ficheros. No es compatible ANSY. exit() Esta funci¢n es exactamente igual a la anterior y adem s es compatible ANSY. spawn... Sintaxis: int spawnl(modo, path, arg0, arg1,.. argn, NULL); int spawnle(modo, path, arg0, arg1,.. argn, NULL, envp); int spawnlp(modo, path, arg0, arg1,.. argn, NULL); int spawnlpe(modo, path, arg0, arg1,.. argn, NULL, envp); int spawnv(modo, path, argv); int spawnve(modo, path, argv, envp); int spawnvp(modo, path, argv); int spawnvpe(modo, path, argv, envp); Declarado: process.h Funci¢n: Carga un proceso nuevo y lo ejecuta. La diferencia con exec es el modo en el que se ejecuta el proceso padre, indicado por el argumento modo. Lo expuesto para exec es v lido tambi‚n para spawn. int modo; modo de ejecuci¢n para proceso padre char *path; nombre de fichero a ser ejecutado char *arg0..*argn; lista de punteros a argumentos char *argv[]; array de punteros a argumentos char *envp[]; array de punteros a variables del entorno al proceso. El argumento modo est  definido en process.h y puede ser: Valor Significado --------------------------------------------------------- P_WAIT Suspende el proceso padre hasta que finalice la ejecuci¢n del proceso llamado P_NOWAIT Continua la ejecuci¢n del proceso padre, concurrentemente con el proceso llamado (v lido solamente en modo protegido): P_NOWAITO Continua la ejecuci¢n del proceso padre, concurrentemente con el proceso llamado e ignora las llamadas wait o cwait (v lido solamente en modo protegido). P_OVERLAY Tiene el mismo efecto que las llamadas efectuadas con la funci¢n exec (destruye el proceso padre). El valor devuelto por la funci¢n spawn s¡ncrona (P_WAIT), es el estado de salida del proceso llamado (proceso hijo) El valor devuelto por la funci¢n spawn s¡ncrona (P_NOWAIT, P_NOWAITO), es la identificaci¢n ID del proceso. Para obtener el c¢digo de salida, se debe llamar a la funci¢n wait o cwait y especificar ID. Si ocurre error el valor devuelto es -1 y la variable errno es puesta al valor correspondiente. system() Sintaxis: int system(const char *comando); Declarado: stdlib.h, process.h Funci¢n: Invoca al command.com y ejecuta comando. LIBRERIAS DE TURBO C - setjmp.h longjmp() Sintaxis: void longjmp(jmp_buf envbuf, int val); Declarado: setjmp.h Funci¢n: Da lugar a que la ejecuci¢n del programa se retome en el punto en que se llamado por £ltima vez a setjmp(). Estas dos funciones son la forma en que C permite saltar entre funciones. La funci¢n longjmp() opera inicializando la pila ya descrita por envbuf, que debe haber sido activada en una llamada anterior a setjmp(). Esto da lugar a que la ejecuci¢n del programa se retome en la sentencia siguiente al setjmp() que la llam¢. En otras palabras, el ordenador es "enga¤ado" haci‚ndole pensar que nunca dej¢ la funci¢n que llam¢ a setjmp(). (Para utilizar una explicaci¢n m s o menos gr fica, longjmp() "se desv¡a" en el tiempo y en el espacio de la memoria a un punto anterior del programa sin tener que hacer el proceso normal de return.) El buffer envbuf es de tipo jmp_buf, que est  definido en setjmp.h. El buffer debe haber sido activado a trav‚s de una llamada a setjmp(), anterior a la llamada a longjmp(). El valor de val se transforma en el valor de vuelta a setjmp() y puede preguntarse por ‚l para determinar de d¢nde viene longjmp(). El £nico valor no permitido es 0. Es importante comprender que longjmp() se debe llamar antes de que la funci¢n que llam¢ a setjmp() vuelva. Si no, el resultado queda indefinido. setjmp() Sintaxis: int setjmp(jmp_buf envbuf); Declarado: setjmp.h Funci¢n: Guarda el contenido de la pila del sistema en el buffer envbuf para ser utilizado m s tarde por longjmp(). Esta funci¢n devuelve 0 despu‚s de la llamada. Sin embargo longjmp() pasa un argumento a setjmp() cuando se ejecuta, y es este valor (siempre distinto de cero) el valor de setjmp() despu‚s de la llamada a longjmp(). LIBRERIAS DE TURBO C - share.h Aqui est n definidos los modos de apertura de sopen para ficheros compartidos, y son: SH_COMPAT Modo compatible SH_DENYRW Denegado acceso de escritura SH_DENYRD Denegado acceso de lectura SH_DENYNONE Acceso de lectura y escritura SH_DENYNO Igual que el anterior LIBRERIAS DE TURBO C - signal.h raise() Sintaxis: int raise(int marca); Declarado: signal.h Funci¢n: Env¡a la se¤al especificada por marca al programa en ejecuci¢n. Esto supone un entorno multitarea. Devuelve 0 si tiene ‚xito; en otro caso devuelve un valor distinto de 0. Los posibles valores de marca son: ÉÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º NOMBRE ³ SIGNIFICADO º ÇÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º SIGABRT ³ Terminaci¢n anormal del programa º º SIGFPE ³ Error en operaci¢n de punto flotante º º SIGILL ³ Instrucci¢n ilegal º º SIGINT ³ Interrupci¢n del CTRL+BREAK º º SIGSEGV ³ Acceso inv lido º º SIGTERM ³ Petici¢n de finalizaci¢n de programa º ÈÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ El programa puede definir un handler particular para tratar estos errores (a trav‚s de la funci¢n signal()). Devuelve 0 si no hay errores, en caso contrario, devuelve un valor diferente de 0. signal() Sintaxis: void (*signal(int marca, void (*func)(int sig[,int subcode])))(int); Declarado: signal.h Funci¢n: Define la funci¢n func que se ejecutar  si se recibe la se¤al especificada por marca. El valor de marca puede ser una de las siguientes macros. SIGABRT Ejecuci¢n abortada SIGFPE Detecta errores aritm‚ticos SIGILL Detecta una funci¢n no v lida SIGINT Detecta un aborto del sistema SIGSEGV Detecta acceso incorrecto a memoria SIGTERM Detecta una petici¢n de terminaci¢n externa. El valor para func debe ser la direcci¢n de una funci¢n o una de las siguientes macros: SIG_DFL Utilizar manipulador de se¤ales impl¡cito SIG_IGN Ignorar la se¤al. SIG_ERR Error retornado desde una se¤al. Si se utiliza la direcci¢n de una funci¢n se ejecuta la funci¢n especificada. LIBRERIAS DE TURBO C - stdarg.h va_... Sintaxis: void va_start(va_list param, ult_parm); type va_arg(va_list param, tipo); void va_end(va_list param); Declarado: stdarg.h Funci¢n: Las macros va_arg(), va_start() trabajan con la funci¢n va_end() que permite pasar un n£mero variable de argumentos a la funci¢n. El tipo va_list est  definido en stdarg.h. El procedimiento general para crear una funci¢n que pueda tomar un n£mero variable de argumentos es la siguiente. La funci¢n debe tener al menos un par metro previo a la lista de par metros variables, pero puede tener m s. Antes de que cualquiera de los par metros de longitud variable puedan ser utilizados, el puntero del argumento param debe estar inicializado por medio de una llamada a va_start(). Despu‚s de esto, los par metros se devuelven a trav‚s de llamadas a va_arg(), con tipo siendo el tipo del siguiente par metro. Finalmente, una vez que todos los par metros han sido le¡dos y antes de volver de la funci¢n, se debe hacer una llamada a va_end() para asegurar que la pila est  reconstruida. Si no se llama a va_end() es muy com£n que el programa aborte. LIBRERIAS DE TURBO C - stddef.h En este fichero est n definidos: errno NULL ptrdiff_t size_t LIBRERIAS DE TURBO C - stdio.h assert() Sintaxis: void assert(int test); Declarado: assert.h stdio.h Funci¢n: assert es un macro que se expande mediante un if, si el test evaluado es cero, assert pone un mensaje en stderr y aborta el programa. clearerr() Sintaxis: void clearerr(FILE *pf); Declarado: stdio.h Funci¢n: Desactiva el indicador de error y el indicador de fin de fichero (EOF) para el fichero pf poni‚ndolo a 0. fclose() Sintaxis: int fclose(FILE *stream); Declarado: stdio.h Funci¢n: Cierra el fichero asociado con stream. fcloseall() Sintaxis: int fcloseall(void); Declarado: stdio.h Funci¢n: Cierra todos los ficheros abiertos excepto stdin, stdout, stdprn, stderr y stdaux. fdopen() Sintaxis: FILE *fdopen(int num, char *acceso); Declarado: stdio.h Funci¢n: Permite utilizar por rutinas estandard, un fichero identificado por num, abierto por rutinas a nivel de sistema. El argumento acceso puede ser: "r" Abrir para leer "w" Abrir para escribir. "a" Abrir para a¤adir al final. "r+" Abrir para leer y escribir. Debe existir. "w+" Abrir para leer y escribir. si no existe se crea, si existe se destruye y se crea uno nuevo. "a+" Abrir para leer y a¤adir. Si no existe se crea. feof() Sintaxis: int feof(FILE *pf); Declarado: stdio.h Funci¢n: Detecta el final de fichero, retornando un valor distinto de cero si ha sido detectado el indicador de fin de fichero en la £ltima operaci¢n de lectura, o 0 si no ha sido detectado. ferror() Sintaxis: int ferror(FILE *pf); Declarado: stdio.h Funci¢n: Verifica si ha ocurrido un error en una operaci¢n con ficheros. Cuando ocurre un error, el indicador de error para ese fichero se pone activo y permanece en este estado hasta que la funci¢n clearerr sea ejecutada. Esta funci¢n devuelve un 0 si no ha ocurrido un error y un valor distinto de 0 en caso contrario. fflush() Sintaxis: int fflush(FILE *pf); Declarado: stdio.h Funci¢n: Escribe en el fichero apuntado por pf, el contenido del buffer asociado al mismo. Si el fichero en lugar de estar abierto para escribir est  abierto para leer. fflush borra el contenido del buffer. fgetc() Sintaxis: int fgetc(FILE *pf); Declarado: stdio.h Funci¢n: Lee un car cter del fichero apuntado por pf, de la posici¢n indicada por el puntero de L/E. Si ocurre un error o detecta el final de fichero devuelve EOF. fgetchar() Sintaxis: int fgetchar(void); Declarado: stdio.h Funci¢n: Devuelve el siguiente car cter desde stdin. En caso de fin de fichero o de error, devuelve EOF. fgetpos() Sintaxis: int fgetpos(FILE *pf, fpos_t *pos); Declarado: stdio.h Funci¢n: Pone el puntero de L/E correspondiente al fichero apuntado por pf, en la posici¢n indicada por pos, la cual ha sido previamente obtenida por la funci¢n fgetpos. Esta funci¢n desactiva el indicador de fin de fichero. Si la acci¢n se lleva correctamente, la funci¢n devuelve 0, en caso contrario devuelve otro valor. fgets() Sintaxis: char *fgets(char *s, int n, FILE *pf); Declarado: stdio.h Funci¢n: Lee una cadena de caracteres, s, del fichero apuntado por pf, a¤adi‚ndole al final NULL. Se entiende por s desde la posici¢n actual dentro del fichero, hasta el primer car cter '\n' incluido este, hasta el final del fichero, o hasta que el numero de caracteres sea igual a n-1. fileno() Sintaxis: int fileno(FILE *pf); Declarado: stdio.h Funci¢n: Esta funci¢n devuelve el n£mero asociado a pf. flushall() Sintaxis: int flushall(void); Declarado: stdio.h Funci¢n: Limpia todos los buffers asociados con dispositivos de entrada, y escribe el contenido de los buffers en sus correspondientes dispositivos de salida. fopen() Sintaxis: FILE *fopen(char *path, char *acceso); Declarado: stdio.h Funci¢n: Abre el fichero especificado por path en el modo indicado en acceso. acceso puede ser: "r" Abrir para leer. Si no existe o no se encuentra se obtiene un error. "w" Abrir para escribir. Si el fichero no existe se crea y si existe su contenido se destruye para ser creado de nuevo. "a" Abrir para a¤adir informaci¢n al final del fichero. Si no existe, se crea. "r+" Abrir para leer y escribir. El fichero debe existir. "w+" Abrir para leer y escribir. Si no existe se crea, y si existe se destruye para ser creado de nuevo. "a+" Abrir para leer y a¤adir. Si no existe, se crea. fprintf() Sintaxis: int fprintf(FILE *pf, char *format[, arg, ..]); Declarado: stdio.h Funci¢n: Funciona exactamente igual que printf, con la £nica diferencia de que la cadena es enviada al fichero asociado a pf. fputc() Sintaxis: int fputc(int c, FILE *fp); Declarado: stdio.h Funci¢n: Esta funci¢n escribe un car cter c en el fichero apuntado por pf, en la posici¢n indicada por el puntero de L/E. fputchar() Sintaxis: int fputchar(int c); Declarado: stdio.h Funci¢n: Manda el car cter c a stdout. Es equivalente a fputc(c, stdout). fputs() Sintaxis: int fputs(char *s, FILE *pf); Declarado: stdio.h Funci¢n: Copia la cadena s, en el fichero apuntado por pf. La terminaci¢n '\0' no es copiada. fread() Sintaxis: size_t fread(void *buffer, size_t n, size_t c, FILE *pf); Declarado: stdio.h Funci¢n: Lee hasta c elementos de longitud n bytes, del fichero apuntado por pf, y los almacena en buffer. freopen() Sintaxis: FILE *freopen(char *path, char *acceso, FILE *pf); Declarado: stdio.h Funci¢n: Cierra el fichero asociado actualmente con pf y reasigna pf al fichero identificado por path. Esta funci¢n es utilizada para redireccionar los ficheros standard stdin, stdout, stderr, stdaux y stdprn a ficheros especificados por el usuario. La descripci¢n para el argumento acceso, es la misma que la dada en la funci¢n fopen. fscanf() Sintaxis: int fscanf(FILE *pf, char *formato[ arg, ...]); Declarado: stdio.h Funci¢n: Lee los argumentos arg, con el formato especificado, del fichero apuntado por pf. fseek() Sintaxis: int fseek(FILE *pf, long desp, int pos); Declarado: stdio.h Funci¢n: Mueve el puntero de L/E asociado con el fichero apuntado por pf a una nueva localizaci¢n desplazada desp bytes de la posici¢n dada por el argumento pos. Pos Definici¢n -------------------------------------------------- SEEK_SET Principio del fichero SEEK_CUR Posici¢n actual del puntero de L/E SEEK_END Final del fichero En modo de texto las operaciones con la funci¢n fseek ser n buenas con un desplazamiento 0 (ir al principio o final) o con un desplazamiento devuelto con la funci¢n ftell, a partir del comienzo del fichero. Esta funci¢n devuelve 0 si no se ha producido error y un valor distinto de 0 en caso contrario. fsetpos() Sintaxis: int fsetpos(FILE *pf, const fpos_t *pos); Declarado: stdio.h Funci¢n: Pone el puntero de L/E correspondiente al fichero pf, en la posici¢n indicada por pos, la cual ha sido previamente obtenida por la funci¢n fgetpos. Esta funci¢n desactiva el indicador de fin de fichero. Devuelve 0 si no hay error y un valor distinto de 0 en caso contrario. ftell() Sintaxis: long ftell(FILE *pf); Declarado: stdio.h Funci¢n: Da como resultado la posici¢n actual del puntero de L/E, relativa al principio del fichero apuntado por pf. En caso de error devuelve -1. fwrite() Sintaxis: size_t fwrite(const void *buffer, size_t n, size_t c, FILE *pf); Declarado: stdio.h Funci¢n: Escribe hasta c elementos de longitud n bytes, almacenados en buffer, en el fichero apuntado por pf. Si no hay error, esta funci¢n devuelve el n£mero de campos escritos. getc() Sintaxis: int getc(FILE *pf); Declarado: stdio.h Funci¢n: Lee un car cter del fichero apuntado por pf, en caso de error o de fin fichero devuelve EOF. getchar() Sintaxis: int getchar(void); Declarado: stdio.h Funci¢n: Lee un car cter de la entrada estandard stdin y avanza la posici¢n de lectura al siguiente car cter a leer. gets() Sintaxis: char *gets(char *s); Declarado: stdio.h Funci¢n: Lee una l¡nea desde la entrada estandard stdin, y la almacena en s. getw() Sintaxis: int getw(FILE *pf); Declarado: stdio.h Funci¢n: Lee el siguiente valor binario de tipo int, del fichero apuntado por pf y avanza el puntero de L/E al siguiente valor no le¡do. perror() Sintaxis: void perror(const char *s); Declarado: stdio.h Funci¢n: Escribe en stderr, el mensaje dado por s seguido por dos puntos, el mensaje de error dado por el sistema y un car cter NL. printf() Sintaxis: int printf(const char *formato[, arg, ...]); Declarado: stdio.h Funci¢n: Escribe con formato, una serie de caracteres o un valor en la salida estandard, stdout. Esta funci¢n devuelve un valor entero igual al n£mero de caracteres escrito. formato especifica como va a ser la salida. arg representa el valor o valores a escribir. Una especificaci¢n de formato est  compuesta por: %[flags][ancho][.precisi¢n][{F/N/h/l/L}]tipo flags significado --------------------------------------------------------- - Justifica el resultado a la izda, dentro del ancho especificado. + Antepone el signo + (m s) 0 - (menos) al valor de salida. # Cuando se utiliza con la especificaci¢n de formato o, x, o X, antepone al valor de salida 0, 0x, o 0X. Cuando se utiliza con e, E, o f, fuerza a que el valor de salida contenga un punto decimal en todos los casos. Cuando se utiliza con g, o G, fuerza a que el valor de salida contenga un punto decimal en todos los casos y evita que los ceros arrastrados sean truncados. Se ignora con c, d, i, u, o s. --------------------------------------------------------- ancho M¡nimo n£mero de posiciones para la salida. Si el valor a escribir ocupa m s posiciones de las especificadas, el ancho es incrementado en lo necesario. precisi¢n El significado depende del tipo de salida. tipo significado (precisi¢n) --------------------------------------------------------- d,i,u,o,x,X La precisi¢n especifica el m¡nimo n£mero de d¡gitos que se tienen que escribir. Si es necesario se rellena con ceros a la izda. Si el valor excede de la precisi¢n, no se trunca. e,E,f La precisi¢n especifica el n£mero de d¡gitos que tienen que ser escritos despu‚s del punto decimal. El valor es redondeado. Por defecto es 6. g,G La precisi¢n especifica el m ximo n£mero de d¡gitos significativos (6 por defecto) que se tienen que escribir. c La precisi¢n no tiene efecto. s La precisi¢n especifica el m ximo n£mero de caracteres a ser escritos. Los caracteres que excedan se ignoran. --------------------------------------------------------- F Utilizado en el modelo small para escribir valores declarados far. N Utilizado en los modelos medium y large para escribir valores declarados near. h Se utiliza como prefijo con los tipos d, i, o, x, y X, para especificar que el argumento es short int, o con u para especificar un short unsigned int. l Utilizado como prefijo con los tipos d, i, 0, x, y X, para especificar que el argumento es long int, o con u para especificar un long unsigned int. Tambi‚n se utiliza con los tipos e, E, f, g, y G para especificar un double en lugar de un float. L Se utiliza como prefijo con los tipos e, E, g, y G, para especificar long double. tipo es uno de los siguientes caracteres: car cter salida --------------------------------------------------------- d (int) enteros con signo en base 10. i (int) enteros con signo en base 10. u (int) enteros sin signo en base 10. o (int) enteros sin signo en base 8. x (int) enteros sin signo base 16 (01..abcdef). X (int) enteros sin signo base 16 (01..ABCDEF). f (double) valor con signo de forma:[-]dddd.dddd. El n£mero de d¡gitos antes del punto decimal depende de la magnitud del n£mero y el n£mero de decimales de la precisi¢n. e (double) valor con signo [-]d.dddde[ñ]ddd E (double) valor con signo [-]d.ddddE[ñ]ddd g (double) valor con signo con formato f o e (el que sea m s compacto para el valor y precisi¢n dados). G Igual que g solo que introduce E en lugar de e c (int) un solo car cter s (cadena de caracteres) escribe una cadena de caracteres hasta el primer car cter '\0'. n (puntero a un entero). En el entero es almacenado el n£mero de caracteres hasta ahora en el buffer. p Escribe una direcci¢n segmentada (xxxx.yyyy). Si se especifica %Np se escribe solamente el offset. %p espera un puntero a un valor far, por ello bajo el modelo small, utilizar con el argumento a escribir, el tipo cast: (tipo far *)arg. putc() Sintaxis: int putc(int c, FILE *pf); Declarado: stdio.h Funci¢n: Escribe el car cter c en el fichero apuntado por pf. puts() Sintaxis: int puts(const char *s); Declarado: stdio.h Funci¢n: Escribe la cadena s en la salida estandard stdout y a¤ade un car cter nueva l¡nea. putw() Sintaxis: int putw(int entd, FILE *pf); Declarado: stdio.h Funci¢n: Escribe el valor binario entd, en el fichero apuntado por pf. Esta funci¢n devuelve el valor escrito o un EOF si ocurre un error. remove() Sintaxis: int remove(char *nombre); Declarado: stdio.h Funci¢n: Borra el fichero especificado por nombre. Devuelve 0 si el archivo es borrado correctamente y -1 en caso contrario. rename() Sintaxis: int rename(char *ant_nom, char *nue_nom); Declarado: stdio.h Funci¢n: Cambia el nombre del archivo ant_nom a nue_nom. Devuelve 0 si tiene ‚xito y otro valor si hay error. rewind() Sintaxis: void rewind(FILE *pf); Declarado: stdio.h Funci¢n: Mueve el indicador de posici¢n del archivo pf al principio del flujo. scanf() Sintaxis: int scanf(const char *formato[, arg]...); Declarado: stdio.h Funci¢n: Lee datos de la entrada estandard stdin. formato est  formado por caracteres en blanco('', \t, \n), caracteres ordinarios, y especificaciones de formato. Cada argumento debe tener su correspondiente especificaci¢n de formato y el mismo orden. Si un car cter en la entrada standard no se corresponde con la entrada especificada por el formato, se interrumpe la entrada de datos. arg es un puntero a la variable que se quiere leer. Una especificaci¢n de formato est  compuesta por: %[*][ancho][{F/N}][{h/l}]tipo * * a continuaci¢n de % suprime la asignaci¢n del siguiente dato en la entrada ancho M ximo n£mero de caracteres a leer, los caracteres en exceso no son tenidos en cuenta. F Indica que se quiere leer un valor apuntado por una direcci¢n far. N Indica que se quiere leer un valor apuntado por una direcci¢n near. h Se utiliza como prefijo de los tipos d, i, n, o, y x, para especificar que el argumento es short int, o con u para especificar un short unsigned int. lh Se utiliza como prefijo de los tipos d, i, n, o, y x, para especificar que el argumento es long int, o con u para especificar un long unsigned int. Tambi‚n se utiliza con los tipos e, f, y g para especificar un double. tipo Determina si el dato de entrada es interpretado como un car cter, como una cadena de caracteres o como un n£mero. Puede se: car tipo entrada --------------------------------------------------------- d int entero con signo en base 10. D long entero con signo en base 10. i int entero en base 10, 16 u 8. I long entero en base 10, 16 u 8. u unsigned int entero sin signo en base 10. U unsigned long entero sin signo en base 10. o int entero sin signo en base 8. O long entero sin signo en base 8. x int entero sin signo en base 16. X long entero sin signo en base 16. f,e,E,g,G double valor con signo [-]d.dddde[ñ]ddd c char un solo car cter s char cadena de caracteres n int en el entero es almacenado el n£mero de caracteres le¡dos del buffer o fichero. p puntero valor de la forma xxxx.yyyy. setbuf() Sintaxis: void setbuf(FILE *pf, char *buf); Declarado: stdio.h Funci¢n: Permite al usuario controlar la memoria intermedia para el fichero apuntado por pf. Debe ejecutarse una vez abierto el fichero y antes de cualquier operaci¢n de lectura o escritura. buffer es un array de caracteres de longitud BUFSIZ, constante definida en stdio.h. setvbuf() Sintaxis: int setvbuf(FILE *pf, char *buffer, int tipo, size_t n); Declarado: stdio.h Funci¢n: Permite controlar la existencia o no de un buffer y su tama¤o. La funci¢n setvbuf debe ejecutarse una vez abierto el fichero y antes de cualquier operaci¢n de lectura o escritura. El argumento buffer es un array de caracteres de longitud n bytes que desempe¤a la funci¢n de buffer o memoria intermedia y el argumento tipo puede ser: Tipo Significado --------------------------------------------------------- _IOFBF Se utiliza buffer como memoria intermedia de tama¤o n bytes _IOLBF Igual que _IOFBF _IONBF No se utiliza una memoria intermedia (buffer) Esta funci¢n devuelve 0 si no ocurre error, y un valor distinto en caso contrario. sprintf() Sintaxis: int sprintf(char *cadena, const char *formato[, arg, ...]); Declarado: stdio.h Funci¢n: Escribe en salida formateada a cadena. Funciona igual a printf. sscanf() Sintaxis: int sscanf(const char *buffer, char *format[, direc,...]); Declarado: stdio.h Funci¢n: Carga las variables desde una cadena. Funciona igual a scanf. _strerror() Sintaxis: char *_strerror(const char *s); Declarado: string.h, stdio.h Funci¢n: Devuelve un puntero a la cadena de mensaje de error. La cadena de mensaje de error est  construida en un buffer est tico que es sobrescrito con cada llamada a sterror. tmpfile() Sintaxis: FILE *tmpfile(void); Declarado: stdio.h Funci¢n: Crea un fichero temporal y devuelve un puntero a ese fichero. Si el fichero no puede ser abierto se devuelve un puntero nulo. Este fichero es autom ticamente borrado, cuando el programa termina normalmente o cuando se borra expl¡citamente con la funci¢n rmtmp. El fichero temporal es abierto en modo w + b. tmpnam() Sintaxis: char *tmpnam(char *nombre); Declarado: stdio.h Funci¢n: Genera un £nico nombre de archivo y lo guarda en la cadena apuntada por nombre. El objetivo de tmpnam() es generar el nombre de un archivo temporal que sea diferente de cualquier otro que exista en el directorio. La funci¢n puede ser llamada hasta un n£mero de veces igual a TMP_MAX, que est  definido en stdio.h. Cada vez se genera un nuevo nombre de archivo temporal. En caso de error devuelve un puntero nulo. ungetc() Sintaxis: int ungetc(int ch, FILE *flujo); Declarado: stdio.h Funci¢n: Devuelve el car cter almacenado en ch al flujo de entrada flujo. Este car cter es entonces devuelto por la siguiente operaci¢n de lectura sobre el flujo. Una llamada a fflush() o a fseek() deshace una operaci¢n ungetc() y deshecha el car cter previamente devuelto al flujo de entrada. No se debe usar ungetc() sobre una marca EOF. Una llamada a ungetc() borra la indicaci¢n de EOF asociada al flujo especificado. El valor del indicador de posici¢n del archivo para un flujo de texto queda indefinido hasta que se lean los caracteres devueltos, en cuyo caso queda como estuviera antes de la primera llamada a ungetc(). Para los flujos binarios cada llamada a ungetc() decrementa el indicador de posici¢n de archivo. El valor devuelto es igual a ch si ha tenido ‚xito y EOF si ha fallado la operaci¢n. unlink() Sintaxis: int unlink(const char *path); Declarado: dos.h, io.h, stdio.h Funci¢n: Borra el fichero especificado por path devolviendo 0. un valor -1 indica error. vfprintf() Sintaxis: int vfprintf(FILE *pf, const char *format, va_list arglist); Declarado: stdio.h Funci¢n: Es equivalente a fprintf(). La diferencia se encuentra en que la lista de argumentos se sustituye por un puntero a una lista de argumentos. Este puntero est  definido en stdarg.h. Consulte la discusi¢n de las funciones va_arg(), va_start() y va_end(). vfscanf() Sintaxis: int vfscanf(FILE *pf, const char *format, va_list arglist); Declarado: stdio.h Funci¢n: Es equivalente a fscanf(). La diferencia se encuentra en que la lista de argumentos se sustituye por un puntero a una lista de argumentos. Este puntero est  definido en stdarg.h. Consulte la discusi¢n de las funciones va_arg(), va_start() y va_end(). vprintf() Sintaxis: int vprintf(FILE *pf, const char *format, va_list arglist); Declarado: stdio.h Funci¢n: Es equivalente a printf(). La diferencia se encuentra en que la lista de argumentos se sustituye por un puntero a una lista de argumentos. Este puntero est  definido en stdarg.h. Consulte la discusi¢n de las funciones va_arg(), va_start() y va_end(). vscanf() Sintaxis: int vscanf(FILE *pf, const char *format, va_list arglist); Declarado: stdio.h Funci¢n: Es equivalente a scanf(). La diferencia se encuentra en que la lista de argumentos se sustituye por un puntero a una lista de argumentos. Este puntero est  definido en stdarg.h. Consulte la discusi¢n de las funciones va_arg(), va_start() y va_end(). vsprintf() Sintaxis: int vsprintf(FILE *pf, const char *format, va_list arglist); Declarado: stdio.h Funci¢n: Es equivalente a sprintf(). La diferencia se encuentra en que la lista de argumentos se sustituye por un puntero a una lista de argumentos. Este puntero est  definido en stdarg.h. Consulte la discusi¢n de las funciones va_arg(), va_start() y va_end(). vsscanf() Sintaxis: int vsscanf(FILE *pf, const char *format, va_list arglist); Declarado: stdio.h Funci¢n: Es equivalente a sscanf(). La diferencia se encuentra en que la lista de argumentos se sustituye por un puntero a una lista de argumentos. Este puntero est  definido en stdarg.h. Consulte la discusi¢n de las funciones va_arg(), va_start() y va_end(). LIBRERIAS DE TURBO C - stdlib.h abort() Sintaxis: void abort(void); Declarado: stdlib.h, process.h Funci¢n: Termina el proceso. esta funci¢n escribe el mensaje (Abnormal program termination) en stderr y aborta el programa llamando a _exit con el c¢digo 3. abs() Sintaxis: int abs(int x); Funci¢n: Devuelve el valor absoluto del entero x que va como argumento. atexit() Sintaxis: int atexit(func); Declarado: stdlib.h Funci¢n: Esta funci¢n da lugar a que la funci¢n func sea ejecutada cuando el programa termina normalmente. Si existen varias llamadas consecutivas, se ejecutan desde la £ltima a la primera. atof() Sintaxis: double atof(char *s); Declarado: math.h, stdlib.h Funci¢n: Convierte la cadena apuntada por s en un double. atoi() Sintaxis: int atoi(char *s); Declarado: stdlib.h Funci¢n: Convierte la cadena de caracteres apuntada por s en un valor entero. atol() Sintaxis: long atol(char *s); Declarado: stdlib.h Funci¢n: Convierte la cadena de caracteres apuntada por s en un valor entero largo. bsearch() Sintaxis: void *bsearch(const void *objeto, const void *base, size_t num, size_t bytes, int(*comparar)(elemento1, elemento2); Declarado: stdlib.h Funci¢n: Retorna un puntero a la primera ocurrencia de objeto en el array apuntado por base. Si la b£squeda falla, la funci¢n retorna NULL. num es el numero de elementos del array. bytes es la longitud en bytes de un elemento. comparar es un puntero a una funci¢n definida por el usuario, que compara dos elementos y retorna un valor < 0 si el elemento1 0 si elemento1>elemento2 y =0 si los dos elementos son iguales. calloc() Sintaxis: void *calloc(size_t n, size_t t); Declarado: stdlib.h, alloc.h Funci¢n: Esta funci¢n, asigna espacio de memoria para un array de n elementos, de longitud t bytes cada uno de ellos. div() Sintaxis: dic_t div(int numer, int denom); Declarado: stdlib.h Funci¢n: Divide dos enteros devolviendo el cociente y el resto en una estructura como la siguiente: typedef struct { int quot; int rem; } div_t; ecvt() Sintaxis: char *ecvt(double valor, int ndig, int *dec, int *sign); Declarado: stdlib.h Funci¢n: Convierte valor en una cadena terminada en NULL de ndig d¡gitos. A la variable dec se asigna la ubicaci¢n del punto decimal con respecto al principio de la cadena, sign ser  0 en caso de ser positivo y cualquier otro valor si es negativo. _exit() Sintaxis: void _exit(int status); Declarado: stdlib.h, process.h Funci¢n: Termina le ejecuci¢n de un programa cerrando todos los ficheros. No es compatible ANSY. exit() Esta funci¢n es exactamente igual a la anterior y adem s es compatible ANSY. fcvt() Sintaxis: char *fcvt(double valor, int ndig, int *dec, int *sign); Declarado: stdlib.h Funci¢n: Convierte un n£mero real a una cadena de caracteres. La cadena ser  terminada con NULL. Esta funci¢n devuelve un puntero a la cadena de caracteres. valor es el n£mero real a convertir. ndig n£mero de d¡gitos despu‚s del punto decimal, si es necesario se a¤aden ceros. dec es un puntero a un valor entero que especifica la posici¢n del punto decimal. sign es un puntero a un valor 0 si el n£mero es positivo, y distinto de 0 si negativo. free() Sintaxis: void free(void *block); Declarado: stdlib.h, alloc.h Funci¢n: Deja libre un bloque de memoria previamente asignado con calloc, malloc o realloc. gcvt() Sintaxis: char *gcvt(double valor, int ndec, char *buf); Declarado: stdlib.h Funci¢n: Convierte valor en una cadena terminada en NULL y la almacena en buf, teniendo ndec decimales. getenv() Sintaxis: char *getenv(const char *nombre); Declarado: stdlib.h Funci¢n: En caso de no haber error devuelve el valor asociado con nombre, si nombre no est  definido en el entorno, devuelve una cadena bac¡a. itoa() Sintaxis: char *itoa(int valor, char *cadena, int base); Declarado: stdlib.h Funci¢n: Convierte un entero en cadena. valor es el n£mero entero a convertir, cadena es la cadena de caracteres resultante, base es la base (2 - 36) en la que viene especificado el valor. Si la base es 10 y el n£mero negativo, el primer car cter almacenado en la cadena ser  el signo menos. ldiv() Sintaxis: ldiv_t ldiv(long int numero, long int denom); Declarado: stdlib.h Funci¢n: Divide dos longs devolviendo el cociente y el resto. l_divt es una estructura de la siguiente forma: typedef struct { long int quot; /* cociente */ long int rem; /* resto */ } ldiv_t; lfind() Sintaxis: void *lfind(const void *objeto, const void *base, size_t *num, size_t bytes, int (*comparar)(const void *, const void *)); Declarado: stdlib.h Funci¢n: Ejecuta una b£squeda lineal de objeto en un array no necesariamente clasificado. base es un puntero al primer elemento del array, num es un puntero a una variable que contiene el n£mero de elementos del array, bytes es la longitud en bytes de un elemento, comparar es un puntero a una funci¢n definida por el usuario, que compara dos elementos y retorna un valor <> 0 si elemento1 y elemento2, son distintos, = 0 si los dos son iguales. La funci¢n devuelve un puntero a la primera ocurrencia de objeto. _lrotl() Sintaxis: unsigned long _lrotl(unsigned long val, int count); Declarado: stdlib.h Funci¢n: Hace una rotaci¢n de count bits a la izda del long val y devuelve su resultado. _lrotr() Sintaxis: unsigned long _lrotr(unsigned long val, int count); Declarado: stdlib.h Funci¢n: Hace una rotaci¢n de count bits a la dcha del long val y devuelve su resultado. lsearch() Sintaxis: void *lsearch(const void *objeto, const void *base, size_t *num, size_t bytes, int (*comparar)(const void *, const void *)); Declarado: stdlib.h Funci¢n: Ejecuta una b£squeda lineal de objeto en un array no necesariamente clasificado. base es un puntero al primer elemento del array, num es un puntero a una variable que contiene el n£mero de elementos del array, bytes es la longitud en bytes de un elemento, comparar es un puntero a una funci¢n definida por el usuario, que compara dos elementos y retorna un valor <> 0 si elemento1 y elemento2, son distintos, = 0 si los dos son iguales. La funci¢n devuelve un puntero a la primera ocurrencia de objeto. Si objeto no se encuentra en el array, lsearch lo a¤ade al final. malloc() Sintaxis: void *malloc(size_t size); Declarado: stdlib.h, alloc.h Funci¢n: Reserva un bloque de memoria de tama¤o size y retorna un puntero al comienzo de ella. max() Sintaxis: (type) max(a, b); Declarado: stdlib.h Funci¢n: Esta macro compara dos valores y devuelve el mayor de los dos. min() Sintaxis: (type) min(a, b); Declarado: stdlib.h Funci¢n: Compara dos valores y devuelve el menor de los dos. putenv() Sintaxis: int putenv(const char *nombre); Declarado. stdlib.h Funci¢n: Carga la cadena nombre y la suma al entorno del proceso. Puede ser usado tambi‚n para modificar o borra un nombre existente. En caso de error devuelve -1. qsort() Sintaxis: void qsort(void *base, size_t num, size_t bytes, int (*comparar)(const void *elemento1, const void *elemento2)); Declarado: stdlib.h Funci¢n: Esta funci¢n ordena un array. base es un puntero al primer elemento del array, num es el n£mero de elementos del array, bytes es la longitud en bytes de un elemento, comparar es una funci¢n definida por el usuario, que compara dos elementos y retorna un valor: < 0 si elemento1 menor a elemento2 > 0 si elemento1 mayor a elemento2 = 0 si elemento1 igual a elemento2 La clasificaci¢n que se obtiene es en orden ascendente. Si queremos una clasificaci¢n en orden descendente, invertir los valores devueltos por la funci¢n comparar. rand() Sintaxis: int rand(void); Declarado: stdlib.h Funci¢n: Genera un flujo de n£meros pseudoaleatorios. Cada vez que se llama, se devuelve un entero entre 0 y RAND_MAX, esta constante est  definida en stdlib.h y es igual a 215ñ1. random() Sintaxis: int random(int num); Declarado: stdlib.h Funci¢n: Devuelve un n£mero aleatorio comprendido entre 0 y num - 1. randomize() Sintaxis: void randomize(void); Declarado: stdlib.h Funci¢n: Inicializa el generador de n£meros aleatorios utilizando el reloj del ordenador. _rotl() Sintaxis: unsigned _rotl(unsigned valor, int cuenta); Declarado: stdlib.h Funci¢n: Rota valor cuenta bits a la izda. _rotr() Sintaxis: unsigned _rotr(unsigned valor, int cuenta); Declarado: stdlib.h Funci¢n: Rota valor cuenta bits a la dcha. srand() Sintaxis: void srand(unsigned arg); Declarado: stdlib.h Funci¢n: Fija el punto de comienzo para generar n£meros pseudoaleatorios. Si no se utiliza, el punto de comienzo siempre es el mismo para cada ejecuci¢n, que es el correspondiente al argumento de valor 1. strtod() Sintaxis: double strtod(char *ini, char **fin); Declarado: stdlib.h Funci¢n: Convierte la representaci¢n de cadena de un n£mero almacenado en la cadena apuntada por ini en un valor double y devuelve el resultado. La funci¢n strtod() trabaja de la siguiente forma. Primero, se elimina cualquier car cter en blanco de la cadena apuntada por ini. A continuaci¢n cada car cter que constituye el n£mero es le¡do. Cualquier car cter que no pueda ser parte de un n£mero en coma flotante dar  lugar a que el proceso se detenga. Esto incluye el espacio en blanco, signos de puntuaci¢n distintos del punto, y caracteres que no sean E o e. Finalmente fin se deja apuntando al resto, si lo hay, de la cadena original. Esto supone que si strtod() se llama con 100.000 pliers, se devuelve el valor 100.000 y fin apunta al espacio que precede a pliers. Si se produce un error de conversi¢n, strtod() devuelve HUGE_VAL strtol() Sintaxis: long strtol(char *ini, char **fin, int radix); Declarado: stdlib.h Funci¢n: Convierte la representaci¢n en cadena de caracteres de un n£mero (ini), en un n£mero de tipo long int y devuelve el resultado. La base del n£mero est  determinada por radix. Si radix es 0, la base viene determinada por la regla que gobierna la especificaci¢n de constantes. Si radix est  especificada, debe tener un valor en el rango 2 a 36. Esta funci¢n trabaja de la siguiente forma. Primero, cualquier espacio en blanco en la cadena apuntada por ini es eliminado. A continuaci¢n, se lee cada car cter que constituye el n£mero. Cualquier car cter que no pueda formar parte de un long int da lugar a que el proceso se detenga. Esto incluye espacios en blanco, signos de puntuaci¢n y caracteres. Finalmente, fin se deja apuntando al resto, si lo hay, de la cadena original. Esto supone que si strtol() se llama con 100 ptas, el valor que se devuelve es 100L y fin apunta al espacio que precede a ptas. En caso de error devuelve 0. strtoul() Sintaxis: unsigned long strtol(char *ini, char **fin, int radix); Declarado: stdlib.h Funci¢n: Esta funci¢n es exactamente igual a la anterior con la diferencia de que es unsigned long en lugar de long. swab() Sintaxis: void swab(char *desde, char *a, int nbytes); Declarado: stdlib.h Funci¢n: Copia nbytes desde la cadena desde en la cadena a. system() Sintaxis: int system(const char *comando); Declarado: stdlib.h, process.h Funci¢n: Invoca al command.com y ejecuta comando. ultoa() Sintaxis: char *ultoa(unsigned long valor, char *cad, int base); Declarado: stdlib.h Funci¢n: Convierte el unsigned long valor en la cadena de caracteres cad. base es la base (2 - 36) en la que viene especificado el valor. Si la base es 10 y el valor es negativo, el primer car cter es el signo menos. LIBRERIAS DE TURBO C - string.h memccpy() Sintaxis: void *memccpy(void *dest, const void *src, int c, size_t n); Declarado: string.h, mem.h Funci¢n: Copia un bloque de n bytes desde scr en dest. La copia para en uno de los siguientes casos: - El car cter c es el primero en copiarse en dest. - n bytes son copiados en dest memchr() Sintaxis: void *memchr(const void *s, int c, size_t n); Declarado: string.h, mem.h Funci¢n: Busca en los primeros n bytes del bloque apuntado por s el car cter c. memcmp() Sintaxis: int memcmp(const void *s1, const void *s2, size_t n); Declarado: string.h, mem.h Funci¢n: Compara los n primeros bytes de los bloques s1 y s2 devolviendo < 0 si s1 < s2, = 0 si s1 = s2, > 0 si s1 > s2. memcpy() Sintaxis: void *memcpy(void *hacia, void *desde, size_t cuenta); Declarado: string.h, mem.h Funci¢n: Copia cuenta caracteres del array apuntado por desde en el array apuntado por hacia. La funci¢n devuelve un puntero a hacia. memicmp() Sintaxis: int memicmp(const void *s1, const void *s2, size_t n); Declarado: string.h, mem.h Funci¢n: Compara los n primeros bytes de las cadenas de caracteres s1 y s2 ignorando may£sculas y min£sculas. Devuelve: < 0 si s1 < s2. = 0 si s1 = s2 > 0 si s1 > s2. memmove() Sintaxis: void *memmove(void *dest, const void *scr, size_t n); Declarado: string.h, mem.h Funci¢n: Copia un bloque de n bytes desde src en dest. Devuelve un puntero a dest. memset() Sintaxis: void *memset(void *buf, int ch, size_t cuenta); Declarado: string.h, mem.h Funci¢n: Copia el byte menos significativo de ch en los primeros cuenta caracteres del array apuntado por buf, devolviendo un puntero a buf. movedata() Sintaxis: void movedata(unsigned srcseg, unsigned srcoff, unsigned dstseg, unsigned dstoff, size_t n); Declarado: string.h, mem.h Funci¢n: Copia n bytes desde (srcseg:srcoff) a (dstseg:dstoff). stpcpy() Sintaxis: char *stpcpy(char *dest, const char *src); Declarado: string.h Funci¢n: Copia la cadena src en dest, parando antes de leer un car cter nulo. strcat() Sintaxis: char *strcat(char *dest, char *scr); Declarado: string.h Funci¢n: A¤ade scr inmediatamente despu‚s de dest retornando un puntero a scr. strchr() Sintaxis: char *strchr(char *cad, int ch); Declarado: string.h Funci¢n: Devuelve un puntero a la primera ocurrencia del byte m s significativo de ch en la cadena apuntada por cad. Si no se encuentra, devuelve un puntero nulo. strcmp() Sintaxis: int strcmp(char *cad1, char *cad2); Declarado: string.h Funci¢n: Compara dos las cadenas cad1 y cad2 devolviendo un numero negativo si cad1 < cad2, ser  0 si ambas cadenas son iguales y un n£mero positivo si cad1 > cad2. Esta funci¢n es sensible a may£sculas y min£sculas. strcmpi() Sintaxis: int strcmpi(char *cad1, char *cad2); Declarado: string.h Funci¢n: Esta funci¢n es id‚ntica a la anterior con la diferencia de que la comparaci¢n no es sensible a may£sculas y min£sculas. strcpy() Sintaxis: char *strcpy(char *dest, const char *cad); Declarado: string.h Funci¢n: Copia cad, incluyendo el car cter de terminaci¢n nulo, en dest y devuelve un puntero a dest. strcspn() Sintaxis: size_t strcspn(char *cad1, char *cad2); Declarado: string.h Funci¢n: Devuelve la longitud de la subcadena inicial apuntada por cad1 que est  constituida solo por aquellos caracteres que no est n contenidos en la cadena cad2. Dicho de otra forma, strcspn() devuelve el ¡ndice del primer car cter en la cadena apuntada por cad1 que est  como car cter de la cadena apuntada por cad2. strdup() Sintaxis: char *strdup(const char *s); Declarado: string.h Funci¢n: Hace un duplicado de la cadena s, obteniendo espacio con una llamada a malloc. El espacio asignado es strlen(s)+1 bytes de longitud. El usuario es responsable de liberar el espacio asignado por strdup() cuando deje de ser necesario. Esta funci¢n devuelve un puntero a la posici¢n de almacenamiento, que contiene el duplicado de la cadena, o retorna un nulo si no puede ser asignado el espacio. _strerror() Sintaxis: char *_strerror(const char *s); Declarado: string.h, stdio.h Funci¢n: Devuelve un puntero a la cadena de mensaje de error. La cadena de mensaje de error est  construida en un buffer est tico que es sobrescrito con cada llamada a sterror. stricmp() Sintaxis: int stricmp(char *cad1, char *cad2); Declarado: string.h Funci¢n: Esta funci¢n es exactamente igual a strcmpi(). strlen() Sintaxis: size_t strlen(cahr *cad); Declarado: string.h Funci¢n: Devuelve la longitud en bytes de cad, no incluyendo el car cter nulo de terminaci¢n. strlwr() Sintaxis: char *strlwr(char *s); Declarado: string.h Funci¢n: Convierte las may£sculas de la cadena s en min£sculas devolviendo un puntero a s. strncat() Sintaxis: char *strncat(char *dest, char *cad, size_t n); Declarado: string.h Funci¢n: A¤ade los n primeros caracteres de cad a dest, termina la cadena resultante con un nulo y devuelve un puntero a dest. Si n es mayor que la longitud de cad, se utiliza como valor de n la longitud de cad. strncmp() Sintaxis: int strncmp(char *cad1, char *cad2, size_t n); Declarado: string.h Funci¢n: Compara los n primeros caracteres de cad1 y cad2 y devuelve un valor < 0 si cad1 es menor a cad2, = 0 si las cadenas son iguales y > 0 si cad1 es mayor a cad2. strncmpi() Sintaxis: int strncmp(char *cad1, char *cad2, size_t n); Declarado: string.h Funci¢n: Esta funci¢n es id‚ntica a la anterior con la diferencia de que la comparaci¢n no es sensible a may£sculas y min£sculas. strncpy() Sintaxis: char *strncpy(char *dest, char *cad, size_t n); Declarado: string.h Funci¢n: Copia n caracteres de cad en dest y devuelve un puntero a dest. Si n es menor que la longitud de cad, no se a¤ade autom ticamente un car cter nulo a la cadena resultante. Si n es mayor que la longitud de cad, dest es rellenado con caracteres nulos hasta la longitud n. strnicmp() Sintaxis: int strncmpi(char *cad1, char *cad2, size_t n); Declarado: string.h Funci¢n: Esta funci¢n es exactamente igual a strncmpi() strnset() Sintaxis: char *strnset(char *s, int ch, size_t n); Declarado: string.h Funci¢n: Copia el car cter ch en los primeros n bytes de la cadena s. Si n > strlen(s), n es reemplazado por strlen(s). Devuelve un puntero a s. strpbrk() Sintaxis: char *strpbrk(const char *s1, const char *s2); Declarado: string.h Funci¢n: Devuelve un puntero a la primera ocurrencia de uno de los caracteres de s2 en s1. Si ninguno de los caracteres de s2 est  en s1 devuelve un NULL. strrchr() Sintaxis: char strrchr(const char *s, int c); Declarado: string.h Funci¢n: Devuelve un puntero a la £ltima ocurrencia del car cter c en s. Si c no est  en s devuelve un NULL. strrev() Sintaxis: char *strrev(char *s); Declarado: string.h Funci¢n: Pone la cadena s al reves. Por ejemplo, si cadena="papi\0" lo convierte en "ipap\0". Devuelve un puntero a s. strset() Sintaxis: char *strset(char *s, int ch); Declarado: string.h Funci¢n: Copia en toda la cadena s el car cter ch devolviendo un puntero a s. strspn() Sintaxis: size_t strspn(char *cad1, char *cad2); Declarado: string.h Funci¢n: Da como resultado la posici¢n (¡ndice) del primer car cter de cad1, que no pertenece al conjunto de caracteres contenidos en cad2. strstr() Sintaxis: char *strstr(char *cad1, char *cad2); Declarado: string.h Funci¢n: Devuelve un puntero a la primera ocurrencia de cad2 en cad1 o un valor NULL si cad2 no se encuentra en cad1. strtok() Sintaxis: char *strtok(char *cad1, char *cad2); Declarado: string.h Funci¢n: Lee cad1 como una serie de cero o m s elementos b sicos separados por cualquiera de los caracteres expresados en cad2, los cuales son interpretados como delimitadores. Una vez le¡do el primer elemento de cad1, la siguiente llamada a strtok, para leer el siguiente elemento, se efect£a poniendo en lugar del argumento cad1, NULL. Esta funci¢n devuelve un puntero por cada elemento en cad1. Cuando no hay m s elementos, se devuelve un puntero nulo. Puede ponerse m s de un delimitador entre elemento y elemento. Tambi‚n pueden variarse el conjunto de caracteres que act£an como delimitadores, de una llamada a otra. strupr() Sintaxis: char *strupr(char *s); Declarado: string.h Funci¢n: Convierte las letras min£sculas de la cadena s en may£sculas y devuelve un puntero a s. LIBRERIAS DE TURBO C - sys\stat.h fstat() Sintaxis: int fstat(int handle, struct stat *statbuf); Declarado: sys\stat.h Funci¢n: Almacena informaci¢n en la estructura de tipo stat en torno al fichero abierto o al directorio asociado con handle, esta estructura contiene los siguientes campos: st_mode m scara de bits con informaci¢n entorno al modo de apertura del fichero. st_dev n£mero de drive o disco que contiene el fichero o file handle si el fichero es un dispositivo. st_rdev igual a st_dev st_nlink seleccionado para la constante 1 st_size tama¤o en bytes del fichero abierto st_atime Fecha m s reciente en que el fichero ha sido modificado. st_mtime igual a st_atime st_ctime igual a st_atime En caso de error devuelve -1, en caso contrario devuelve 0. stat() Sintaxis: stat(char *path, struct stat *buffer); Declarado: sys\stat.h Funci¢n: Obtiene informaci¢n acerca del fichero o directorio especificado por path y la almacena en la estructura apuntada de tipo stat buffer. La estructura contiene los siguientes campos: struct stat { dev_t st_dev; Unidad de disco o n£mero de dispositivo ino_t st_ino; unsigned short st_mode; caracter¡sticas short st_nlink; Siempre es 1 short st_uid; short st_gid; dev_t st_rdev; Unidad de disco que lo contiene off_t st_size; Tama¤o del fichero en bytes time_t st_atime Ultima vez que se modific¢ time_t st_mtime Igual que st_atime time_t st_ctime igual que st_atime }; Devuelve 0 si no hay error. Un valor -1 indica error. LIBRERIAS DE TURBO C - sys\timeb.h ftime() Sintaxis: void ftime(struct timeb *buf); Declarado: sys\timeb.h Funci¢n: Determina la hora actual y rellena la estructura de tipo timeb apuntada por buf. Esta estructura contiene los siguientes campos: time contiene los segundos transcurridos desde el 1 de Enero de 1.970. millitm parte fraccionada de un segundo en milisegundos. timezone es la diferencia en minutos de la hora local con la GMT. dstflag es 0 o 1 dependiendo de la utilizaci¢n del reloj de 12 o 24 horas. LIBRERIAS DE TURBO C - sys\types.h LIBRERIAS DE TURBO C - time.h asctime() Sintaxis: char *asctime(const struct tm *tbloc); Declarado: time.h Funci¢n: Convierte la hora almacenada en la estructura *tbloc en una cadena de 26 caracteres de la forma siguiente Sun Sep 16 01:03:52 1973\n\0 La funci¢n devuelve un puntero a la cadena de caracteres. clock() Sintaxis: clock_t clock(void); Declarado: time.h Funci¢n: Esta funci¢n se utiliza para saber el tiempo transcurrido entre dos sucesos. Para convertir el tiempo en segundos, se debe dividir el valor devuelto por la funci¢n entre CLK_TCK. ctime() Sintaxis: char *ctime(const time_t *time); Declarado: time.h Funci¢n: Convierte el valor apuntado por time (valor retornado por la funci¢n time) en una cadena de 26 caracteres del formato siguiente: Lun Nov 21 11:31:54 1983\n\0 difftime() Sintaxis: double difftime(time_t time2, time_t time1); Declarado: time.h Funci¢n: Calcula el tiempo transcurrido entre dos tiempos dados. gmtime() Sintaxis: struct tm *gmtime(const time_t *timer); Declarado: time.h Funci¢n: Coge la direcci¢n de un valor devuelto por time y devuelve un puntero a la estructura de tipo tm. La estructura es de la siguiente forma: struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; localtime() Sintaxis: struct tm *localtime(const time_t *seg); Declarado: time.h Funci¢n: Convierte el n£mero de segundos transcurrido desde las 0 horas del 1 de Enero de 1.970, valor obtenido generalmente con la funci¢n time, a la fecha y hora correspondiente, devolviendo un puntero a la estructura de tipo tm que contiene los resultados, esta estructura es como sigue: struct tm { int tm_sec; /* Segundos */ int tm_min; /* Minutos */ int tm_hour; /* horas (0 - 24) */ int tm_mday; /* D¡a del mes (1 - 31) */ int tm_mon; /* Mes (0 - 11) */ int tm_year; /* A¤o - 1.900 */ int tm_wday; /* D¡a de la semana (0 - 6) */ int tm_yday; /* D¡a del a¤o (0 - 365) */ int tm_isdst; /* Cero si de d¡a */ }; stime() Sintaxis: int stime(time_t *tp); Declarado: time.h Funci¢n: Carga en tp el tiempo en segundos transcurrido desde las 00:00:00 del 1 de Enero de 1970. time() Sintaxis: time_t time(time_t *seg); Declarado: time.h Funci¢n: Devuelve el n£mero de segundos transcurridos desde las 0 horas del 1 de Enero de 1.970. tzset() Sintaxis: void tzset(void); Declarado: time.h Funci¢n: Carga los valores en las variables globales daylight, timezone y tzname. LIBRERIAS DE TURBO C - values.h Define constantes compatibles con UNIX para l¡mites de valores float y double. BITSPERBYTE N£mero de bits en un byte _DEXPLEN N£mero de bits en un exponente DMAXEXP M ximo exponente disponible DMAXPOWTWO DMINEXP M¡nimo exponente disponible DSIGNIF N£mero de bits significativos _EXPBASE _FEXPLEN N£mero de bits en un exponente FMAXEXP M ximo exponente disponible FMAXPOWTWO FMINEXP M¡nimo exponente disponible HIBITI M scara de bits. Bit del signo en un int HIBITL Bit de signo en un long HIBITS Bit de signo en un short MAXDOUBLE M ximo valor double MAXFLOAT M ximo valor float MAXINT M ximo valor int MAXLONG M ximo valor long MAXSHRT M ximo valor short MINDOUBLE M¡nimo valor double MINFLOAT Minimo valor float. EL COMPILADAR TCC Un programa en C se puede desarrollar en su totalidad desde el entorno integrado de desarrollo. Pero cuando se emplea otro editor, es m s pr ctico compilarlo desde el propio sistema operativo. Para esto se invoca al programa TCC, que realiza la compilaci¢n e invoca al montador TLINK para crear un fichero ejecutable. Por ejemplo TCC TT41.c compila TT41.c y monta con la librer¡a correspondiente el fichero objeto generado. La forma general para invocarlo es TCC [opcion1 opcion2 ...] fichero1 ... donde fichero es un fichero fuente, un fichero objeto, o una librer¡a; y opci¢n es una de las opciones que aparecen en la tabla siguiente. Todas las opciones del compilador comienzan con un gui¢n. Para compilar y no montar TT41.c, la ordrn desde el DOS ser  la siguiente: TCC -c TT41.c Si se invoca al compilador de la forma siguiente: TCC -S TT41.C indica que se crear  el fichero TT41.ASM con un listado en ensamblador del programa fuente. Las opciones -S y -B no se pueden utilizar en el sistema integrado de desarrollo, por lo tanto, cuando se quiera incluir rutinas en ensamblador, o cuando se quiera obtener un listado en ensamblador del programa furente, se debe compilar desde el sistema operativo. Si se tiene un programa con dos m¢dulos, por ejemplo, T4101.c y T4102.c con el segundo ya compilado, se invoca al compilador de la siguiente forma TCC T4101 T4102.OBJ que compila T4101 y monta T4101.OBJ y T4102.OBJ con la librer¡a correspondiente. Si se tiene otra librer¡a que no utiliza Turbo C, ‚sta se a¤ade con la extensi¢n .LIB. OPCION SIGNIFICADO -A Solo reconoce las palabras ANSY C -a Usa alineaci¢n de palabras para los datos. -a- Usa alineaci¢n de bytes para los þdatos -B Se incluye c¢digo en ensamblador en el fichero fuente -C Admite anidamiento de comentarios -c Solo realiza la compilaci¢n a .OBJ -Dnombre Define un nombre de macro -Dnombre=cadena Define y da un valor a una macro -d Optimiza las cadenas duplicadas -d- No optimiza las cadenas duplicadas -Enombre Indica el nombre del ensamblador a emplear (por defecto es TASM) -enombre Especifica el nombre de un fichero de proyecto -f Emplea emulaci¢n de punto flotante -f- Sin emulaci¢n de punto flotante -f87 Usa el coprocesador 8087 -G Optimiza el c¢digo por velocidad -gN Aborta la compilaci¢n despues de N avisos del compilador. -Icamino Especifica el directorio o camino de los ficheros de encabezamiento. -iN Especifica la longitud m xima para los identificadores -jN Aborta la compilaci¢n despues de N errores -K Por defecto, todas las variables de tipo char no tienen signo -K- Por defecto todas las variables de tipo char son con signo -k Emplea una pila estandard -Lcamino Especifica el directorio de la biblioteca de funciones -M Crea un fichero el mapa de s¡mbolos -mc Emplea el modelo compacto de memoria -mh Emplea el modelo huge de memoria -ml Emplea modelo large de memoria -mm Emplea modelo medium de memoria -ms Emplea modelo small -mt emplea modelo tiny -N Genera el c¢digo necesario para comprobar desbordamiento de pila -ncamino Especifica el directorio de salida -O Optimiza el c¢digo de tama¤o -Onombre Nombre del fichero objeto que se genera -p Emplea las convenciones del Pascal para invocar funciones -p- Emplea las convenciones del C para invocar a funciones -r Emplea variables de tipo registro -S Genera un fichero en ensamblador -Unombre Elimina una macro -v Incluye la informaci¢n necesaria para depurar el programa (ya sea a trav‚s de los men£s de Turbo C o con Turbo Debugger) -w Visualiza las advertencias del compilador -w- No visualiza las advertencias del compilador -y Incluye la numeraci¢n de las l¡neas en c¢digo fuente -Z Optimiza variables con el tipo registro -1 Genera instrucciones para 80186/80286 -1- Genera instrucciones para 8088/8086 EL MONTADOR TLINK El programa TCC utiliza el montador TLINK para enlazar los ficheros objeto que genera. Tambien es posible invocar directamente este montador desde el sistema operativo. El montador se puede emplear para ficheros objeto compilados con Turbo C, Turbo Assembler y Turbo Prolog, entre otros. El formato general para emplear TLINK es: TLINK ficheros.obj,ficheros.exe,fichero.map,librerias Si no se especifica el fichero ejecutable, se toma el nombre del primer fichero objeto. Si no se especifica el nombre del fichero de mapa de memoria, se toma el nombre del fichero ejecutable. Cuando se enlazan programas compilados con Turbo C, se debe a¤adir un fichero objeto seg£n el modelo de memoria que se emplee. Los m¢dulos objeto son los siguientes: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º M¢dulo ³ Modelo de memoria º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º COT.OBJ ³ Tiny (muy peque¤o) º º COS.OBJ ³ Small (peque¤o) º º COM.OBJ ³ Medium (mediano) º º COC.OBJ ³ Compact (compacto) º º COL.OBJ ³ Large (grande) º º COH.OBJ ³ HUge (muy grande) º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Estos m¢dulos deben ir al principio de la orden. Tambi‚n hay que incluir la libreria que emplee TLINK. Hay varios m¢dulos de libreria, descritos en la siguiente figura, cada uno correspondiendo a un modelo de memoria, y son: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Librer¡a ³ Modelo de memoria º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º CT.LIB ³ Tiny (muy peque¤o) º º CS.LIB ³ Small (peque¤o) º º CM.LIB ³ Medium (mediano) º º CC.LIB ³ Compact (compacto) º º CL.LIB ³ Large (grande) º º CH.LIB ³ HUge (muy grande) º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Existen tambi‚n otros m¢dulos de librer¡a que se emplean con las funciones matem ticas, y son: ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Librer¡a ³ Modelo de memoria º ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ º EMU.LIB ³ todos (emula el 8087) º º FP87.LIB ³ todos, el 8087 est  presente º º MATHt.LIB ³ Tiny (muy peque¤o) º º MATHs.LIB ³ Small (peque¤o) º º MATHc.LIB ³ Compact (compacto) º º MATHm.LIB ³ Medium (mediano) º º MATHl.LIB ³ Large (grande) º º MATHh.LIB ³ Huge (muy grande) º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Si se quieren enlazar los m¢dulos T4101, T4102 y T4103 de un programa que utiliza datos en punto flotante y funciones matem ticas con el modelo compacto de memoria, se invocar  a TLINK desde el DOS de la siguiente forma: TLINK COC T4101 T4102 T4103,TT41,,EMU MATHC CC Si existen muchos m¢dulos y la orden no cabe en una sola l¡nea, se puede crear un fichero y almacenar toda la informaci¢n en ‚l. En este caso TLINK se invocar  de la forma siguiente: TLINK @nombre-de-fichero El montador TLINK admite las opciones que aparecen en la tabla siguiente: Opci¢n ignificado ÉÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º ³ /c ³ May£sculas y min£sculas se diferencian en ³os º º ³ s¡mbolos º º /d ³ Avisa de s¡mbolos duplicados º º /i ³ Inicializa todos los segmentos º º /l ³ Incluye los n£meros de las l¡neas del c¢digo º º ³ fuente º º /m ³ Incluye los s¡mbolos globales en el mapa º º /n ³ Ignora la libreria por defecto º º /s ³ Crea un mapa detallando los segmentos º º /x ³ No se genera ning£n mapa º ÈÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Cada opci¢n comienza con una barra y se puede incluir en cualquier parte de la l¡nea de comando. NOTA: Los modelos de memoria que admiten m s de 64 kbytes de datos o de c¢digo, no pueden sobrepasar este tama¤o en un solo m¢dulo. En el caso de suceder esto, tendremos que dividir el m¢dulo en varios ficheros fuente Dentro de un programa muchas veces es necesario acceder a zonas de memoria que no est n en el mismo segmento. Para poder mantener el modelo peque¤o de memoria, y no tener que compilar con otro, Turbo C proporciona dos tipos de modificadores de datos, que permiten que un puntero pueda apuntar a otros segmentos. EStos modificadores son far y huge. Por ejemplo: char far *yo_apunto; declara un puntero, de tipo far, a caracteres. El puntero far indica que puede acceder a direcciones de memoria pertenecientes a otros segmentos. Con un puntero far hay que tener en cunta que la aritm‚tica de punteros solo afecta al desplazamiento de la direcci¢n, no al segmento, es decir, el operador de incremento no afecta al valor del segmento. Sin embargo, los operadores == y != si comparan todos los bits de la direcci¢n, y por lo tanto, es posible si un puntero es igual a 0 (puntero nulo o NULL). No se puede realizar ning£n otro tipo de comparaci¢n con los punteros far. El modificador far tambi‚n se puede emplear sobre funciones, cuando estas est n en otros segmentos. Este es el caso de las funciones residentes en rom. El modificador huge es similar al far, con la ventaja de que la aritm‚tica de punteros se calcula con la direcci¢n completa. Por lo tanto, permite realizar incrementos y comparaciones de una direcci¢n. El complemeto de los modificadores far y huge, es el modificador near, que se utiliza cuando se compila con los modelos grandes de memoria, y se desea declarar un puntero que apunte a variables dentro del propio segmento. Con este modificador Turbo C emplea el puntero como un desplazamiento de 16 bits para el registro DS. Si se compila con los modelos medium, large o huge, todas las funciones devuelven en la pila una direcci¢n de 4 octetos (empleando 20 bits o m s). Declarando una funci¢n como near, se fuerza a que devuelva una direcci¢n de 16 bits. ESto es pr ctico, por ejemplo, cuando una funci¢n es recursiva, y se desee evitar que consuma mucha memoria de pila. De esta forma tambi‚n se gana en velocidad de ejecuci¢n. Turbo C proporciona otros cuatro modificadores de punteros para definir los segmentos dentro de los que puede apuntar. Los cuatro modificadores son _cs, _ds, _ss y _es. Por ejemplo, char _ds *yo_apunto_puntero; declara un puntero que va a contener desplazamientos dentro del segmento de datos. COMPILACION DE PROGRAMAS DE VARIOS MODULOS Cuando los programas son muy grandes, los ficheros son m s lentos para editar y compilar. Si hay que realizar un peque¤o cambio en una funci¢n, es necesarioa recompilar todo el programa. De ahi que cuando un programa crezca en tama¤o, sea necesario, casi obligatorio, dividirlo en unidades significativas llamadas m¢dulos. Esta forma de trabajo tambi‚n tiene otra ventaja, pues facilita que varias personas participen en un proyecto, permitiendo que cada una de ellas se encargue de programar uno o varios m¢dulos. Los m¢dulos se mantienen como ficheros independientes que se compilan por separado. Pero cuando hay muchas m¢dulos, cada vez que se quiera ejecutar el programa, ser  necesario recordar cuales son los m¢dulos que se deben recompilar. Para estos casos Turbo C proporciona una utilidad que mantiene automaticamente los m¢dulos de un programa. ESto se consigue definiendo un fichero de proyecto, que contenga los nombres de todos los m¢dulos que forman parte del programa. En el entorno integrado de Turbo C existe una opci¢n para definir un fichero de proyecto. En este fichero se incluyen los nombres de los m¢dulos que integran un programa. El fichero de proyecto debe tener extensi¢n .PRJ. Los nombres de los m¢dulos fuente se indican en cada l¡nea del fichero de proyecto, por ejemplo: T4101.C T4102.C T4103.C Si se selecciona la opci¢n RUN del men£ principal, el sistema lee los nombres en el fichero de proyecto previamente indicado con la opci¢n PROJECT NAME, del men£ PROJECT, y compila los m¢dulos necesarios, los enlaza y finalmente ejecuta el programa. Si no se quiere ejecutar el programa, se selecciona la opci¢n MAKE dentro del men£ COMPILE. Tambi‚n se puede utilizar la tecla de funci¢n F9. Para decidir que ficheros se deben compilar, Turbo C compara la fecha y hora de cada fichero fuente con su fichero objeto. En el fichero de proyecto se pueden definir las relaciones de unos m¢dulos con otros. Por ejemplo: T4101.C (CONSTANT.H) (GLOBALES.H) T4102.C (CONSTANT.H) (GLOBALES.H) T4103.C indica que los dos primeros m¢dulos se tienen que volver a compilar si hay alg£n cambio en los ficheros de encabezamiento CONSTANT.H o GLOBALES.H. Esta situaci¢n es muy com£n puesto que es comveniente agrupar los prototipos de las funcines, las constantes, las macros y las variables globales en ficheros de encabezamiento, que se a¤aden a los m¢dulos que las necesiten, de una forma similar a como los ficheros de encabezamiento que se a¤adan a los m¢dulos que las necesiten, de una forma similar a como los ficheros de encabezamiento se deben incluir en las diferentes librer¡as. Para compilar varios m¢dulos desde la l¡nea de ordenes del DOS, se emplea el programa MAKE. La forma de emplear esta utilidad es similar a la anterior. El formato general de MAKE es: fichero 1: lista de ficheros dependientes secuencia de ordenes fichero 2: lista de ficheros dependientes secuencia de ordenes ... fichero n: lista de ficheros dependientes secuencia de ordenes La definici¢n consta de ficheros dependientes cuya finalidad es la construcci¢n de otro fichero. De esta forma el fichero destino puede ser el m¢dulo objeto y el fichero dependiente, el m¢dulo fuente. La utilidad MAKE compara la fecha y hora de ambos ficheros. Si el fichero destino no existe o es anterior al dependiente se ejecuta la orden dada en la l¡nea siguiente. Poe ejemplo, para mantener un programa con dos m¢dulos, T4101.C y T4102.C, y el fichero de encabezamiento CONSTANT.H; se crear¡a un fichero con la siguiente definici¢n: T4101.OBJ: T4101.C CONSTANT.H TCC -c -mh T4101.C T4102.OBJ: T4102.C CONSTANT.H TCC -c -mh T4102.C TT41.EXE: T4101.OBJ T4102.OBJ TLINK COH T4101.OBJT4102.OBJ,TT41,TT41, EMU MATHH CH Las l¡neas de este fichero indican las condiciones de compilaci¢n para cada uno de los m¢dulos del programa. Cuando la fecha de los ficheros T4101.C o CONSTANT.H sea posterior a la de T4101.OBJ, se ejecutar n las ordenes que se incican en la l¡nea posterior a la comparaci¢n. Lo mismo ocurre con la l¡nea de T4102.C, y de forma similar, cuando cualquiera de los ficheros objeto T4101.OBJ o T4102.OBJ sea posterior a TT41.EXE, el fichero se volver  a montar usando TLINK Hay que tener en cuenta ciertas reglas: - La lista de ordenes debe comenzar con espacio o tabulador. - El fichero destino debe comenzar en la primera columna - Cada especificaci¢n de m¢dulo debe estar separada por una linea en blanco. Tambi‚n se puede introducir comentarios, empleando el caracter #, que har  que se tome como comentario todo lo que le preceda hasta el final de l¡nea. Para invocar un programa MAKE, se indica con la opci¢n -f el nombre del fichero que contiene la descripci¢n de los m¢dulos. Por ejemplo. MAKE -fTT41.PRJ invoca al programa MAKE con el fichero TT41.PRJ. Si no se especifica ning£n nombre, se emplea el nombre MAKEFILE por defecto. Si antes de reconstruir un programa con varios m¢dulos se desea actualizar la fecha de alg£n fichero, se puede emplear el programa TOUCH, que asigna la fecha y hora del sistema operativo al fichero que se indica como argumento. Esta utilidad admite los comodines. LA UTILIDAD CPP Cuando en alg£n programa se tienen problemas en la declaraci¢n de una macro, o en un fichero de encabezamiento, es muy util espandir el fichero fuente para poder inspeccionar bien el posible error. Para ello se puede emplear la utilidad CPP, que recibe como argumento un fichero fuente y crea el mismo fichero expandiendo todas las macros y las directivas #include. Si CPP se le invoca con la opcion -P- no se genera la salida de esta forma, y se podr  compilar el fichero resultante. LA UTILIDAD OBJXREF Esta utilidad examina uno o varios ficheros objeto y produce un informe sobre sus contenidos. Se puede emplear con una librer¡a. El formato general es: OBJXREF ficheros Admite las opciones siguientes: DE CONTROL SIGNIFICADO /I Se emplea cuando no se ha utilizado /C con TLINK (cuando no distingue may£sculas de min£sculas) /F Incluye todos los ficheros objeto de la librer¡a especificada. /V Lista los nombres de los ficheros y el total de m¢dulos, segmentos y clases. /Z Incluye los segmentos sin longitud. TIPO LISTADO SIGNIFICADO /RC Listado ordenado por el tipo de segmento (BSS, CODE, DATA): /RM Lista todos los m¢dulos, junto con los nombres p£blicos que contienen /RP Listado ordenado por nombres p£blicos, indicando para cada uno, el m¢dulo a que pertenece. /RR Es la opci¢n por defecto. Produce un listado ordenado con los nombres p£blicos. Junto a cada nombre se indica el m¢dulo al que pertenece y los m¢dulos que lo referencian. /RS Se listan los nombres de los segmentos, junto con los m¢dulos que los componen. Para cada m¢dulo se indica el tama¤o en bytes. /RU Listado de los nombres no referenciados /RV Se genera un listado de cada tipo /RX Se produce un listado con las referencias externas que contenga cada m¢dulo. C Y ENSAMBLADOR Un programa en C puede incluir instrucciones en ensamblador, con la condici¢n de que lleven el prefijo asm. El formato es el siguiente: asm La l¡nea de instrucci¢n termina con el retorno de carro o con punto y coma. Para introducir comentarios, se emplean los mismos s¡mbolos de C. Los programas que emplean c¢digo en ensamblador deber n de compilarse en modo l¡nea de ordenes con el programa TCC, empleando la opci¢n -B. Tambi‚n el ensamblador MASM debe estar disponible, y debe ser la versi¢n 3.0 o posterior. La versi¢n 2.0 de Turbo C no invoca al MASM sino al Turbo Assembler (TASM). Cuando el compilador encuentra la palabra asm, invoca al ensamblador con la l¡nea correspondiente.