Está en la página 1de 7

Clase Semana N.

6
Manual para para crear tu propia biblioteca en C/C++
Las bibliotecas permiten el uso de funciones en un programa sin la necesidad de escribir
su código en nuestro programa, únicamente llamando a la biblioteca donde está contenida.

Existen bibliotecas estándares en C que ya vienen incluida en la mayoría de los compiladores,


como son stdio.h, math.h, time.h...
Para utilizar nuestra biblioteca, únicamente basta con situar en la cabecera del programa el
nombre de la biblioteca para poder utilizar todas las funciones contenidas en la misma.

A continuación se detallan los paso para la construcción de una biblioteca o librería:

MANUAL CREACIÓN BIBLIOTECA:

1º) Genera las funciones que te interesan y escribelas todas juntas (codigo y cabeceras)
en un mismo archivo de texto (Puedes usar el editor de texto del compilador, el bloc de notas,
igual da...) tal y como se ilustra a continuación con un sencillo ejemplo:

int multiplica(int A, int B);


int suma(int A, int B);
int resta(int A, int B);

int multiplica(int A, int B)


{
return(A*B);
}
int suma(int A, int B)
{
return(A+B);
}
int resta(int A, int B)
{
return(A-B);
}

2º) El fichero creado anteriormente, guardalo con extension .h, por


ejemplomilibreria.h (importante no ejecutarlo para que no le pueda cambiar sola la extensión). Se
deberá guardar en la carpeta include del compilador. Esta carpeta se puede encontrar facilmente
en la misma carpeta del compilador., accediendo a Mi PC (Equipo) y en la carpeta donde se
guardan todos los programas.
Otra opción es que si solo se desea usar mibiblioteca.h una unica vez, se puede guardar el fichero
en la misma carpeta del codigo que queramos compilar. Dependiendo de este ultimo paso
tendremos...

3º)Llamar a la biblioteca en el programa. Deberemos colocar en la cabecera del programa,


junto a los llamamiento de otras bibliotecas:

#include <milibreria.h> Cuando el fichero milibreria.h se encuentre en la carpeta include de


nuestro compilador.
#include "milibreria.h" Cuando el fichero milibreria.h esté en el mismo directorio que el archivo que
queremos compilar.

4º)Uso de las funciones de la biblioteca: Finalmente ya podemos usar las funciones


de milibreria.h sin necesidad de copiar el codigo, tal y como ilustra el programa siguiente:

#include <stdio.h>
# include <conio.h>
#include <milibreria.h>
int main(void)
{
int X,Y;
printf("Introduzca dos numeros enteros para multiplicarlos, sumarlos y restarlos \n");
printf(" Primer numero: ");
scanf("%d",&X);
printf(" Segundo numero: ");
scanf("%d",&Y);

printf("X*Y=%d \n",multiplica(X,Y));
printf("X+Y=%d \n",suma(X,Y));
printf("X-Y=%d \n",resta(X,Y));
getch();
}

Y en el caso de que libreria.h este en la misma carpeta:

#include <stdio.h>
#include "milibreria.h"

int main(void)
{
int X,Y;
printf("Introduzca dos numeros enteros para multiplicarlos, sumarlos y restarlos \n");
printf(" Primer numero: ");
scanf("%d",&X);
printf(" Segundo numero: ");
scanf("%d",&Y);

printf("X*Y=%d \n",multiplica(X,Y));
printf("X+Y=%d \n",suma(X,Y));
printf("X-Y=%d \n",resta(X,Y));
getch();
}
La Función fflush en Lenguaje C

¿Para qué sirve la función fflush en C?

Ejemplo 1: Si ejecutamos el siguiente programa:

#include <stdio.h>

int main()
{
int a, b;
printf( "Introduzca el primer numero: " );
scanf( "%d", &a );
printf( "Introduzca el segundo numero: " );
scanf( "%d", &b );
printf( "Los valores son: %d, %d ", a, b );
return 0;
}

por pantalla veremos algo parecido a:

Introduzca el primer numero: 76


Introduzca el segundo numero: 45
Los valores son: 76, 45

Obsérvese que, cuando se ejecuta scanf, por ejemplo, en la primera vez

scanf( "%d", &a );

el programa se detiene a la espera de que el usuario teclee el dato de entrada requerido, el cual es
almacenado, temporalmente, en el buffer (memoria intermedia) de la entrada estándar. Y cuando
se pulsa la tecla INTRO, es, en ese momento, cuando a la variable a se le asigna el valor
introducido. Pero, además, se produce un salto de línea automático, de forma que, después de
introducir el número 76, la siguiente instrucción se muestra una línea más abajo. De igual forma,
después de la instrucción

scanf( "%d", &b );

también se produce un salto de línea automático. En este ejemplo todo ha ido muy bien, sin
embargo, se tiene que tener especial cuidado si utilizados scanf para leer caracteres.

Ejemplo 2: En el siguiente programa:


#include <stdio.h>

int main()
{
char a, b, c;
printf( "Introduzca primer caracter: " );
scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );

return 0;
}

por pantalla se verá algo similar a:

Introduzca primer caracter: f


Introduzca segundo caracter: Introduzca tercer caracter: h
Los valores son: f,
, h

En esta ocasión, ¿por qué no se ejecuta, correctamente, la siguiente instrucción?

scanf( "%c", &b );

La razón es la siguiente: cuando se ejecuta la primera instrucción de entrada:

scanf( "%c", &a );

después de asignar el carácter 'f' a la variable a, se produce un salto de línea automático, pero,
en el buffer del teclado también se ha quedado almacenada la secuencia de escape (\n), que es,
precisamente, un carácter. En consecuencia, cuando se ejecuta la instrucción

scanf( "%c", &b );

a la variable b se le asigna el salto de línea almacenado en el buffer de la entrada estándar, y la


ejecución del programa continua con la siguiente instrucción. Ahora, el buffer vuelve a estar vacío
y, por tanto, la entrada de la variable c sí que se ejecuta de forma correcta.

Para comprobar que esto es así, podemos sustituir la instrucción

printf( "Los valores son: %c, %c, %c ", a, b, c );

por esta otra:

printf( "Los valores son: %d, %d, %d ", a, b, c );

En pantalla veremos:

Introduzca primer caracter: f


Introduzca segundo caracter: Introduzca tercer caracter: h
Los valores son: 102, 10, 104

y como se puede comprobar en las tablas del ASCII, los números 102, 10 y 104 corresponden a los
caracteres 'f', LF (Salto de Línea) y 'h', respectivamente.
Para resolver este problema, antes de leer un carácter con scanf, hay que vaciar (limpiar) el buffer
del teclado. Para ello, se utiliza la función fflush.

Ejemplo 3: De forma que, el código quedaría de la siguiente manera:

#include <stdio.h>

int main()
{
char a, b, c;

printf( "Introduzca primer caracter: " );


scanf( "%c", &a );
printf( "Introduzca segundo caracter: " );
fflush( stdin );
scanf( "%c", &b );
printf( "Introduzca tercer caracter: " );
fflush( stdin );
scanf( "%c", &c );
printf( "Los valores son: %c, %c, %c ", a, b, c );

return 0;
}
La primera vez que se ejecuta scanf, el buffer del teclado está vacío, por tanto, no es preciso
utilizar fflush, pero sí, en los dos casos posteriores. Obsérvese que, a fflush hay que indicarle
el buffer a limpiar, Standar Input (stdin) en este caso.

También podría gustarte