Funciones de registro

Llevo tiempo sin escribir avances , aunque no significa que no los haya habido.

Ya tengo prácticamente pulidas las funciones de registro de datos con comprobación de integridad referencial. Queda relacionarlas entre ellas dentro del programa.

De momento para buscar en los índices, lo hace de forma secuencial, ya veremos si me pongo para pasar la búsqueda con dicotómica , si me sobra tiempo lo haré.

También he hecho una pequeña función "Fecha_actual"

Estudiando el "entorno gráfico"

He estado estudiando mas a fondo el código y parece que ya tengo control sobre el. Se me sigue resistiendo lo del scroll entre menús, como no... consultaré a ver si se puede solucionar.

He creado una especie de log y voy anotando los problemas que me voy encontrando y lo que añado/quito del programa. Aquí una copia de lo que llevo :


-22/3/2009 //////////////////
00:55 - Arreglo: Había un bug que al pasar de una pantalla a otra siempre se mostraba el primer menú.
BUG! - No detecta que se ha cambiado de menú cuando se pulsa izq/drcha
12:20 - Arreglo: Entendido al 100% el funcionamiento de la función "desplazamiento_menú",
ahora llega hasta el menú que yo quiera y se para en el primero y el último
13:06 - Bug : Dentro de la función "menú_opciones" si que va cambiando el valor del menú,
pero cuando sale de la función y vuelve a la función "desplazamiento" parece que no
utiliza éste valor.


-21/3/2009 //////////////////
- Cambiando nombre de funciones
- Añadida opción de cambiar entre menús con tabulador
16:50 - Añadido: otro menú
17:14 - Añadido: Ahora se pueden hacer menús diferentes

Creando el menú de la aplicación



He encontrado una "pequeña" aplicación hecha con ncurses que crea el típico menú de opciones que hay en la parte superior de cualquier programa y me va a ir muy bien para el mio .

Llevo unos días analizando el código y creo que voy entendiendo lo que hace, hay que modificar algunas cosas para adaptarlo al programa como por ejemplo la cantidad de menús, en éste aparecen todos los menús iguales (Hay dos). Mi objetivo sería hacer más y diferentes, cosa que haré con un switch :D

También he detectado un fallo, está en la función que recorre las opciones del menú, en el actual si cambiamos de un menú al otro con las flechas del teclado y clicamos en una opción nos detecta como si fuera una opción del menú seleccionado inicialmente.

Otro problemilla facilmente solucionable es que si en una terminal de gnome clicamos "F1" nos abre la ayuda así que no permite abrir el primer menú.

Introduciendo registros en Tabla clientes

Ya tengo el código para ir introduciendo registros en la tabla Clientes, lo que me falta es hacer una función de esta para tenerlo más organizado, pero no sé hacerlo, tendré que preguntarle al profe.


#include
#include
#include
#include "modulos/tablas.c";

char * asigets(char * s, int mida);

int main()
{
size_t escrito;

Tcliente vcli;

FILE * apfi;


if ((apfi=fopen("bd/clientes.datos","a+"))==NULL)
perror("Error al abrir el archivo");
else
{
printf("Código de cliente: ");
asigets(vcli.codicli,sizeof(vcli.codicli));

printf("Nombre: ");
asigets(vcli.nombre,sizeof(vcli.nombre));

printf("Direccion: ");
asigets(vcli.direccion,sizeof(vcli.direccion));

printf("Teléfono 1: ");
asigets(vcli.tlf1,sizeof(vcli.tlf1));

printf("Teléfono 2: ");
asigets(vcli.tlf2,sizeof(vcli.tlf2));

escrito=fwrite(&vcli,sizeof(vcli),1,apfi);
}

return 0;
}

char * asigets(char * s, int mida){
char * pc;
pc=fgets(s,mida,stdin);
if(s[strlen(s)-1]=='\n')
s[strlen(s)-1]='\0';
else
while (fgetc(stdin)!='\n');
return pc;
}


Escribiendo en un fichero

He estado mirando en clase como escribir en un archivo y por ahora resulta todo bastante sencillo.

He sabido que con el fputc() , putc() o putchar() y un while se puede ir recogiendo de un string sin más complicaciones.


#include
#include
int main()
{
FILE * apfi;
int i;
char c;
char *frase="Frase de algo\n";

// ABRIENDO EL ARCHIVO ///////////

apfi=fopen("tmp/proves.txt","a+");
// Pongo a+ para que vaya añadiendo al final del archivo
if (apfi==NULL)
perror("En obrir proves.txt");
else
c=fgetc(apfi);

// ESCRIBIENDO //////////////////

for (i = 0; i < strlen(frase); i++)
{
if (fputc(frase[i],apfi)==EOF)
perror("ERROR:");
}
}