Anterior Home Siguiente

Complementos de Lenguaje C


Librería dir.h

mkdir: Crea una carpeta o directorio. Devuelve 0 si ha tenido éxito, o -1 si se ha producido un error.

Sintaxis: mkdir("nombre_carpeta");

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main()
{
	char carpeta[20];

	printf("Deme el nombre de la carpeta: ");
	scanf("%s",carpeta);

	if(mkdir(carpeta)!=0) printf("Error al crear la carpeta\n");
	else printf("Sea ha creado la carpeta %s\n",carpeta);
	getch();
}

rmdir: Borra una carpeta o directorio. Devuelve 0 si ha tenido éxito, o -1 si se ha producido un error. La carpeta debe estar vacía.

Sintaxis: rmdir("nombre_carpeta");

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main()
{
	char carpeta[20];

	printf("Deme el nombre de la carpeta que quiere borrar: ");
	scanf("%s",carpeta);

	if(rmdir(carpeta)!=0) printf("No se pudo borrar el directorio\n");
	else printf("La carpeta %s ha sido eliminada\n",carpeta);
	getch();
}

chdir: Cambia de directorio. Devuelve 0 si ha tenido éxito, o -1 si se ha producido un error.

Sintaxis: chdir("ruta");

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main()
{
	char ruta[40];

	printf("Escriba la ruta a donde quiere ir: ");
	scanf("%s",ruta);

	if(chdir(ruta)!=0) printf("Error en la ruta especificada\n");

	getch();
}

searchpath: Devuelve la ruta completa de un archivo en el directorio actual. Devuelve NULL si no ha tenido éxito.

Sintaxis: searchpath("nombre_archivo");

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main()
{
	char nombre[20];
	char *ruta;

	printf("Como ese llama el archivo que desea buscar: ");
	scanf("%s", nombre);

	if(searchpath(nombre)==NULL) printf("No se encontró el archivo\n");
	else printf("La ruta del archivo es:\n %s\n", ruta);
	getch();
}

getcwd: Devuelve la ruta completa del directorio actual. Devuelve NULL si no ha tenido éxito.

Sintaxis: getcwd(buffer, largo_buffer);

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main()
{
   char buffer[MAXPATH];
	/* MAXPATH simboliza la máxima cantidad de
	caracteres en la especificación de un archivo */

   getcwd(buffer, MAXPATH);
   printf("El directorio atual es: %s\n", buffer);
   getch();
}

getdisk: Obtiene la unidad de disco actual. Devuelve un entero que representa la unidad actual. La unidad A es 0

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main( )
{
   int unidad;

   unidad = 'A' + getdisk();
   /* la suma tiene que ver con el código ASCII
	si a A le sumo 1, obtengo la B, si le sumo 2
	obtengo la C */
   printf("La unidad actual es: %c\n", unidad);
   getch();
}

setdisk: Cambia la unidad de disco

Sintaxis: setdisk(numero_de_unidad);

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main(void)
{
   int salvar, disk, unidades=0;

   /* salva la unidad actual */
   salvar=getdisk();

   /* imprime las letras de las unidades disponibles */
   printf("Unidadea Disponibles:\n");
   for (disk = 0;disk < 26;++disk)
   /* el 26 viene de las 26 letras del abecedario */
   {
      setdisk(disk);
	  if (disk == getdisk())
	   {
		 printf("%c: esta disponible\n", disk + 'A');
		 unidades++;
	   }
   }

   printf("%i unidades logicas hay disponibles en el sistema\n\n", unidades);

   setdisk(salvar);

   getch();
}

getcurdir: Devuelve la ruta completa del directorio actual. Devuelve NULL si no ha tenido éxito.

Sintaxis: getcurdir(0, ruta+3)

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main()
{
	char ruta[MAXPATH];

	strcpy(ruta, "X:\\"); 	/* llena la cadena con el
				formato habitual UNIDAD:\ */
	ruta[0] = 'A' + getdisk(); /* remplaza la X por la
				letra de unidad actual */
	getcurdir(0, ruta+3);  /* llena a partir del cuarto
				elemento de la cadena ruta */
	printf("\n%s", ruta);
	getch();
}

findfirst: Examina el directorio de un disco. Devuelve 0 si ha tenido éxito, y -1 si no es así.

Sintaxis: findfirst("especificación de archivo, estructura ffblk, atributos)

En la especificación de archivo se pueden usar comodines.

ffblk, corresponde a una estructura de control de bloque y tiene la siguiente forma:

struct ffblk
{
	char      ff_reserved[21];
	char      ff_attrib;
	unsigned  ff_ftime;
	unsigned  ff_fdate;
	long      ff_fsize;
	char      ff_name[13];
;

Los atributos de DOS son:

FA_RDONLY     Sólo lectura
FA_HIDDEN     Archivo Oculto
FA_SYSTEM     Archivo de sitema
FA_LABEL      Etiqueta del volumen
FA_DIREC      Directorio
FA_ARCH       Archivo

findnext: Continúa el exmen que de directorio realizado por find first. Devuelve 0 si ha tenido éxito, y -1 si no es así.

Sintaxis: findnext(estructura ffblk)

Ejemplo de findfirst y findnext:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

main(void)
{
   struct ffblk ffblk; /* estructuras de control de bloques de DOS */
   int listo;
   printf("Directory listing of *.*\n");
   listo = findfirst("*.*",&ffblk,0);
   while (!listo)
   {
      printf("  %s\n", ffblk.ff_name);
	  listo = findnext(&ffblk);
   }

   getch();
}

Librería bios.h

bioskey: Interface de teclado. Permite por ejemplo obtener los códigos extendidos de teclas y combinaciones de teclas (Ctrl+tecla, Alt+tecla, shift+tecla)

Sintaxis: bioskey(comando);

Los valores de comando pueden ser:

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <bios.h>

main()
{
	int tecla;

	tecla=bioskey(0);
	printf("\n%i",tecla);

	getch();
}

Ejercicio: obtener el código extendido de la tecla escape, y luego hacer una rutina que permita obtener los códigos extendidos de diferentes teclas y combinaciones de teclas hasta que se presione escape.

biosmemory: Devuelve el tamaño de la memoria

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <bios.h>

main(void)
{
   int memoria;

   memoria = biosmemory();
   printf("Tamaño de la RAM = %iKb\n",memoria);
   getch();
}

biosdisk: Devuelve el estado de la unidad que consulte.

Sintaxis: biosdisk(int comando, int unidad, int cabeza, int pista, int sector, int nsectores, void *buffer);

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <bios.h>

int main(void)
{
   int resultado;
   char buffer[512];

   printf("Comprobando si la Unidad A: esta lista...\n");
   resultado = biosdisk(4,0,0,0,0,1,buffer);
   resultado &= 0x02;
   (resultado) ? (printf("La Unidad A: está lista\n")) :
		 (printf("La Unidad A: no está lista\n"));

   getch();
}

biostime: Rutina para accesar al reloj de la BIOS.

Sintaxis: long biostime(int comando, long nueva_hora);

Si el comando es 0, se lee el reloj de la BIOS. si el comando es 1, se fija el reloj de la Bios con la nueva hora. El tiempo se mide en ticks desde la medianoche (0 hrs.). Hay una relación de 18.2 ticks por segundo.

Ejemplo:

#include <stdio.h>
#include <stdlib.h>
#include <bios.h>
#include <conio.h>

main(void)
{
   long bios_time;

   clrscr();
   cprintf("El numero  de ticks desde medianoche es:\r\n");
   cprintf("El numero de segundos desde medianoche es:\r\n");
   cprintf("El numero de minutos desde medianoche es:\r\n");
   cprintf("El numero de horas desde medianoche es:\r\n");
   cprintf("\r\nPresione cualquier tecla pata terminar...");
   while(!kbhit())
   {
      bios_time = biostime(0, 0L);

      gotoxy(50, 1);
      cprintf("%lu", bios_time);

      gotoxy(50, 2);
      cprintf("%.4f", bios_time / CLK_TCK);

      gotoxy(50, 3);
      cprintf("%.4f", bios_time / CLK_TCK / 60);

      gotoxy(50, 4);
      cprintf("%.4f", bios_time / CLK_TCK / 3600);
}

Anterior Home Siguiente



© 2000 Made in Bufoland