Download PracticaCII
Document related concepts
no text concepts found
Transcript
Autor:Kepa Bengoetxea Práctica: Desarrollo de Librerías y Proyectos en C PRACTICA: Desarrollo de Librerías y Proyectos en C (II) Objetivos: -Manejo del Lenguaje C -Uso de funciones de librería y ficheros cabecera -Uso de compilador: gcc -Crear librerías dinámicas y estáticas -Gestionar los proyectos con make AVISO: Sólo los ejercicios 5 y 6 son obligatorios, los demás son optativos. 1.-Programa que preguntando al usuario el nombre de un fichero calcula su tamaño en bytes(nº de caracteres). 2.-Programa que preguntando al usuario por el nombre de un fichero escribe en este el abecedario tanto en minúsculas como en mayúsculas, cada uno en una fila. 3.-Programa que preguntándole al usuario por el nombre de un fichero y por el número bytes por el que quieres partir dicho fichero. Parta el fichero especificado en ficheros de tantos bytes de tamaño como indique el número leído , salvo quizás el último de ellos. Para nombrar los ficheros a generar, utilizar la siguiente nomenclatura: @@@@.000,@@@@.001,@@@@.002 ... Realizar primeramente un “gen_nom.h” con las declaraciones de las siguientes funciones y “gen_nom.c”con la definición: a. Generar_Primer_Nombre será un procedimiento al que se le pasa un array de caracteres como parámetro por referencia. Este procedimiento introduce el nombre de fichero @@@@.000 en el array que se le pasa por referencia (utiliza strcpy) b. Una función Generar_Siguiente_Nombre que pasándole un array de caracteres por refenrencia donde estará el último nombre de fichero generado, ej: @@@@.073 . Se deberá incrementar en 1 la extensión devolviendo @@@@.074 en el array pasado por referencia. Además devolverá un valor 0 si todo ha ido correctamente y en caso de que el nombre pasado por referencia sea @@@@.999 devolverá un valor –1 (incorrecto).Nota: Utilizar la función atoi,sprintf,strcpy,strcat,strlen,... 4.-Volver a realizar el programa organizándolo de la siguiente manera: a.-Crear una librería estática “libgeneral.a” que contenga las funciones de gen_nom.c .Una vez creada la librería utilizarla para crear el ejecutable partir que ahora la llamaremos “partirestatica” . b.-Cree una librería dinámica con las funciones de gen_nom.c y cree un ejecutable que se llamará partirdinamic que la utilice. c.-Compilar utilizando el make sin utilizar librerías. 5.-Dado los siguientes módulos en C En /home/kepa/include/ tenemos los siguientes .h: aritmetica.h: #ifndef _ARITMETICA_H #define _ARITMETICA_H int producto (int a, int b); int resta (int a, int b); Autor:Kepa Bengoetxea Práctica: Desarrollo de Librerías y Proyectos en C int suma (int a, int b); #endif constante.h #ifndef _CONSTANTE_H #define _CONSTANTE_H #define PI 3.1415 #endif area.h #ifndef _AREA_H #define _AREA_H int rectangulo (int x, int y); float circulo (int x); #endif En /home/kepa/fuentes/ tenemos aritmetica.c: int suma (int a, int b) { return a+b; } int resta (int a, int b) { return a-b; } int producto (int a, int b) {return a*b; } area.c: int rectangulo (int x,int y){return producto(x,y);} float circulo (int x){return (PI * producto(x,x));} a) Incluye todos los #include en los ficheros aritmética y área b) Realizar una aplicación llamado “examen.c” que pida 2 números enteros por teclado y nos muestre por pantalla la suma de los dos números y el área del rectángulo, utilizando los módulos de arriba (suponiendo que estos módulos no están en ninguna librería) c) Compila cada módulo y finalmente la aplicación utilizando dichos módulos. d) Introduce área y aritmética en una librería dinámica que se llamará libdinamica y vuelve a compilar y ejecutar examen esta vez utilizando los módulos de la librería. Guarda la librería en /home/kepa/librerias. e) Idem que c) pero utilizando el make 6.-Dado el siguiente programa principal incompleto llamado “numaesfich.c” int main() { char nombre[80],c; FILE *fp; int contador=0; printf ("¿De qué fichero deseas conocer el número de aes?"); scanf("%s",nombre); fp=fopen(nombre,"r"); if (fp==NULL) { Autor:Kepa Bengoetxea Práctica: Desarrollo de Librerías y Proyectos en C printf("No se puede abrir el fichero %s \n",nombre); return -1; } else { contador=fNumCaracFich('a',fp); fclose(fp); printf("El número de a-s es de %d",contador); } return 0; } a)Crea la función “fNumCaracFich” que pasándole el carácter a buscar y el descriptor de fichero, nos devuelve el número de veces que aparece el carácter en dicho fichero de texto. Introducela en un módulo, y introduce dicho módulo en una librería dinámica. El módulo se llamará “general” y la librería “libgeneral”. b) Crea el ejecutable principal usando la librería dinámica. Completa el programa principal “numaesfich.c” para que todo funcione correctamente.