¿Cómo puedo crear un archivo en C y C++ y que se almacene con unos registros determinados?

1-Crear un archivo
2-Q almacene el programa seguro social, nombre-apellido y dirección
3-El programa debe poner una opción en el menu para buscar la información utilizando el seguro soccial como llave de búsqueda..
A ver si me lo puedes arreglar porque me da muchos errores y es para el lunes..
Gracias
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct {
int segsocial;
int aux;
char nombre[30];
char apellido[30];}trabajador;
void main()
{
clrscr();
int done=FALSE
while(!done)
{
puts("\n archdisco portafolio\n");
puts("A - add news archdisco\n");
puts("L -List archdisco \n");
puts("Q - Quit n");
printf(" Your choice:");
c=getch();
c=toupper(c);
switch(c)
{
case('A'):
puts("Add New archdisco \n");
write_ infoc);
break;
case('L'):
puts("List archdisco \n");
read_infoc);
brek;
case ('Q'):
puts ("Quit \n");
done =TRUE;
break;
default:
puts("?");
break:
}
}
}
void write_info(void)
{
//creando y cerrando el archivo en disco
FILE *archdisco;
archdisco = fopen("c:\\nombre.dat","w");
fclose(archdisco);
getchar();
}
void read_info()
{
FILE *archdisco;strcuct archdiso_data archdisco;
int x ;
archdisco = fopen("archdisco .dat","r");
if (arhdisco == NULL)
{
puts(Nodatainfile");
return 0;
}
while(TRUE){
x=fread (&archdisco, size of (archdisco),1,archdisco);
if (x==0)break;
printf("\n archdisco name :%s\n",archdisco.name);
printf("\n purchased for :%.2\n",archdisco.direccion);
printf("\n:%2\n",archdisco.segurosocial);
}
fclose(archdisco);
}

1 Respuesta

Respuesta
1
Mmm, en primer lugar, no me gusta eso de llegar y coger un programa y arreglarlo,
el primero que debe de darse cuenta de los errores eres tu, porque por que yo te lo arregle no
vas a aprender nada.
Lo que me pides es parece ser un programa que maneja un fichero binario, de lo más fácil:
struct trabajador {
int segsocial;
int aux;
char nombre[30];
char apellido[30];
};
La funcion de escritura de un registro al final del fichero:
void escribeRegistro ( struct trabajador registro ) {
FILE *fichero;
fichero = fopen ("nombre.dat", "ab");
// Si no existe lo crea y si existe posiciona al final
fwrite(fichero, registro, sizeof(struct trabajador), 1 );
fclose(fichero);
}
La funcion de busqueda por numero de segsocial
void buscaRegistro ( int numero , struct trabajador *registro ) {
FILE *fichero;
int encontrado = 0;
fichero = fopen ("nombre.dat", "rb");
// Si no esta fichero == NULL
if ( fichero == NULL ) {
registro = NULL;
return;
}
fread(fichero,registro,sizeof(struct trabajador),1);
while(!feof(fichero) && !encontrado ) {
if ( registro->segsocial == numero ) encontrado = 1;
else fread(fichero,registro,sizeof(struct trabajador),1);
}
if ( !encontrado ) registro = NULL;
fclose(fichero);
}
Y la funcion para escribir por pantalla el contenido del fichero sera algo asi:
void muestraFichero () {
FILE *fichero;
struct trabajador registro;
fichero = fopen ("nombre.dat", "rb");
// Si no esta fichero == NULL
if ( fichero == NULL ) return;
fread(fichero,&registro,sizeof(struct trabajador),1);
while(!feof(fichero) ) {
printf ( "SegSocial : %d\nNombre : %s\nApellido: %s\nAux: %d\n",registro.segsocial, registro.nombre, registro.apellido, registro.aux );
fread(fichero,registro,sizeof(struct trabajador),1);
}
fclose(fichero);
}
Y yo creo que ya esta, lo que pones de la dirección pues se reduce a poner un campo más a la
estructura y luego tenerlo en cuenta a la hora de escribirlo por pantalla.
No lo he compilado, depurarlo es cosa tuya, yo te doy la base, tu construyes lo demás, como
el menu, etc... control de errores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas