ayuda para corregir este codigo por favor
por favor tomen este codigo y miren las fallas que tengo porque no logro correrlo em mi pc con borland 5....
envienmelo por favor en archivos adjuntos .cpp a este correo
[email protected]
es urgente
gracias
// PROGRAMA AGENDA
#include <stdio.h>
#include <string.h>
#include <iostream.h>
struct TAGENDA{
char nombre[15];
char apellidos[20];
char direccion[25];
int edad;
char telefono[12];
short borrado;
} agenda;
int Menu( );
void InsertaRegistro( );
void BorraRegistro( );
void ListaRegistros( );
int nRegistrosFichero( );
FILE * canal1;
Main( ){
int opcion;
char fichero[35];
strcpy(fichero,"c:\agenda.dir");
if((canal1=fopen(fichero, "r+b"))== NULL){
if((canal1=fopen(fichero, "a+b"))== NULL){
printf ("No se puede crear el fichero");
}else{
fclose (canal1);
if ((canal1=fopen(fichero, "r+b"))== NULL)
printf ("No se puede crear el fichero");
}
}
do{
opcion = Menu( );
switch (opcion){
case 1:
InsertaRegistro();
break;
case 2:
BorraRegistro();
break;
case 3:
ListaRegistros();
break;
default:
break;
}
}while(opcion !=0);
fclose (canal1);
}
void InsertaRegistro()
{
printf("Modulo de insertar registrosn");
printf("Nombren");
gets(agenda.nombre);
printf("Apellidosn");
gets(agenda.apellidos);
printf("Direccionn");
gets(agenda.direccion);
printf("Edadn");
scanf("%i" ,&agenda.edad);
getchar( );
printf("Telefonon");
gets(agenda.telefono);
agenda.borrado = 0;
fseek(canal1,0,SEEK_END);
fwrite(&agenda,sizeof(agenda),1,canal1);
fflush(canal1);
}
void BorraRegistro( ){
int i,nr, numero_registros;
numero_registros = nRegistrosFichero( );
rewind(canal1);
printf ("Lista completa de registrosn");
for ( i= 1; i <= numero_registros ;i++){
fread (&agenda,sizeof (agenda) ,1, canal1);
if (agenda.borrado == 0)
printf(" % i. - %s " ,1,agenda.nombre);
}
printf("nNumero del registro a borrar, 0 para cancelarn");
scanf("%i" , &nr);
if (nr>0){
fseek (canal1, (nr-1)*sizeof (agenda) , SEEK_SET);
fread (&agenda, sizeof(agenda),1, canal1);
printf ("%s %s direc.= %s edad= %i Telef.= %sn",agenda.nombre , agenda.apellidos , agenda.direccion,
agenda.edad, agenda.telefono);
agenda.borrado=1 ;
fseek (canal1, (nr-1) *sizeof (agenda), SEEK_SET);
fwrite (&agenda,sizeof (agenda),1,canal1);
fflush(canal1);
}
}
void ListaRegistros()
{
int i,numero_registros;
numero_registros = nRegistrosFichero();
rewind (canal1);
printf("Lista completa de registrosn");
for( i= 1; i <= numero_registros ; i++)
{
fread (&agenda,sizeof(agenda),1, canal1);
if (agenda.borrado ==0)
printf (" %s %s direc.= %s edad= %i Telef.= %s %i n",agenda.nombre, agenda.apellidos,agenda.direccion,agenda.edad,agenda.telefono,agenda.borrado);
}
printf("pulsa una tecla para continuar");
getchar( );
}
int Menu (int opcion) {
printf("nAgenda de telefonosn");
printf("1. - Inserta un registron");
printf("2. - Borra un registron");
printf("3. - Lista todos los registrosn");
printf("0. - Terminarnn");
printf("Selecciona un opcionn");
scanf("%i" ,&opcion);
getchar( );
return opcion;
}
int nRegistrosFichero()
{
fseek (canal1,0,SEEK_END);
return ftell(canal1)/sizeof(agenda);
}
envienmelo por favor en archivos adjuntos .cpp a este correo
[email protected]
es urgente
gracias
// PROGRAMA AGENDA
#include <stdio.h>
#include <string.h>
#include <iostream.h>
struct TAGENDA{
char nombre[15];
char apellidos[20];
char direccion[25];
int edad;
char telefono[12];
short borrado;
} agenda;
int Menu( );
void InsertaRegistro( );
void BorraRegistro( );
void ListaRegistros( );
int nRegistrosFichero( );
FILE * canal1;
Main( ){
int opcion;
char fichero[35];
strcpy(fichero,"c:\agenda.dir");
if((canal1=fopen(fichero, "r+b"))== NULL){
if((canal1=fopen(fichero, "a+b"))== NULL){
printf ("No se puede crear el fichero");
}else{
fclose (canal1);
if ((canal1=fopen(fichero, "r+b"))== NULL)
printf ("No se puede crear el fichero");
}
}
do{
opcion = Menu( );
switch (opcion){
case 1:
InsertaRegistro();
break;
case 2:
BorraRegistro();
break;
case 3:
ListaRegistros();
break;
default:
break;
}
}while(opcion !=0);
fclose (canal1);
}
void InsertaRegistro()
{
printf("Modulo de insertar registrosn");
printf("Nombren");
gets(agenda.nombre);
printf("Apellidosn");
gets(agenda.apellidos);
printf("Direccionn");
gets(agenda.direccion);
printf("Edadn");
scanf("%i" ,&agenda.edad);
getchar( );
printf("Telefonon");
gets(agenda.telefono);
agenda.borrado = 0;
fseek(canal1,0,SEEK_END);
fwrite(&agenda,sizeof(agenda),1,canal1);
fflush(canal1);
}
void BorraRegistro( ){
int i,nr, numero_registros;
numero_registros = nRegistrosFichero( );
rewind(canal1);
printf ("Lista completa de registrosn");
for ( i= 1; i <= numero_registros ;i++){
fread (&agenda,sizeof (agenda) ,1, canal1);
if (agenda.borrado == 0)
printf(" % i. - %s " ,1,agenda.nombre);
}
printf("nNumero del registro a borrar, 0 para cancelarn");
scanf("%i" , &nr);
if (nr>0){
fseek (canal1, (nr-1)*sizeof (agenda) , SEEK_SET);
fread (&agenda, sizeof(agenda),1, canal1);
printf ("%s %s direc.= %s edad= %i Telef.= %sn",agenda.nombre , agenda.apellidos , agenda.direccion,
agenda.edad, agenda.telefono);
agenda.borrado=1 ;
fseek (canal1, (nr-1) *sizeof (agenda), SEEK_SET);
fwrite (&agenda,sizeof (agenda),1,canal1);
fflush(canal1);
}
}
void ListaRegistros()
{
int i,numero_registros;
numero_registros = nRegistrosFichero();
rewind (canal1);
printf("Lista completa de registrosn");
for( i= 1; i <= numero_registros ; i++)
{
fread (&agenda,sizeof(agenda),1, canal1);
if (agenda.borrado ==0)
printf (" %s %s direc.= %s edad= %i Telef.= %s %i n",agenda.nombre, agenda.apellidos,agenda.direccion,agenda.edad,agenda.telefono,agenda.borrado);
}
printf("pulsa una tecla para continuar");
getchar( );
}
int Menu (int opcion) {
printf("nAgenda de telefonosn");
printf("1. - Inserta un registron");
printf("2. - Borra un registron");
printf("3. - Lista todos los registrosn");
printf("0. - Terminarnn");
printf("Selecciona un opcionn");
scanf("%i" ,&opcion);
getchar( );
return opcion;
}
int nRegistrosFichero()
{
fseek (canal1,0,SEEK_END);
return ftell(canal1)/sizeof(agenda);
}
Tienes algunos fallos ,enumero:
1.-Main() ,no se escribe asi se escribe main y procura
que retorne algo y si no retorna se declara void main()
2.-Declaras int Menu() ,sin argumentos ,pero luego la defines como int Menu (int opcion) con lo que tiene un argumento ,deberas declararla como en la definicion y en main hacer la llamada correctamente ,por ej:
opcion=Menu(opcion);
3.- Luego aunque no sean fallos de programacion haces cosas raras por ej:
si haces
char *fichero="c:\agenda.dir" ;
te ahorras el strcpy y gastas la memoria necesaria
aqui->
if((canal1=fopen(fichero, "r+b"))== NULL){
if((canal1=fopen(fichero, "a+b"))== NULL){
printf ("No se puede crear el fichero");
}else{
fclose (canal1);
if ((canal1=fopen(fichero, "r+b"))== NULL)
printf ("No se puede crear el fichero");
}
}
haces un monton de llamadas a ficheros innecerarias si lo que quieres es crear el fichero borra todo y pones solo una sentencia:
if((canal1=fopen(fichero, "a+b"))== NULL)
printf ("No se puede crear el fichero");
Luego tienes cosas que no hacen falta pero son menos importantes.
1.-Main() ,no se escribe asi se escribe main y procura
que retorne algo y si no retorna se declara void main()
2.-Declaras int Menu() ,sin argumentos ,pero luego la defines como int Menu (int opcion) con lo que tiene un argumento ,deberas declararla como en la definicion y en main hacer la llamada correctamente ,por ej:
opcion=Menu(opcion);
3.- Luego aunque no sean fallos de programacion haces cosas raras por ej:
si haces
char *fichero="c:\agenda.dir" ;
te ahorras el strcpy y gastas la memoria necesaria
aqui->
if((canal1=fopen(fichero, "r+b"))== NULL){
if((canal1=fopen(fichero, "a+b"))== NULL){
printf ("No se puede crear el fichero");
}else{
fclose (canal1);
if ((canal1=fopen(fichero, "r+b"))== NULL)
printf ("No se puede crear el fichero");
}
}
haces un monton de llamadas a ficheros innecerarias si lo que quieres es crear el fichero borra todo y pones solo una sentencia:
if((canal1=fopen(fichero, "a+b"))== NULL)
printf ("No se puede crear el fichero");
Luego tienes cosas que no hacen falta pero son menos importantes.
NO SOY TAN VERDUGO EN C, PERO CHEQUEA A VER SI TE GUSTA
AHORA TU PROGRAMA, !!Eres muy inteligente!!
#include <stdio.h>
#include <string.h>
#include <iostream.h>
struct TAGENDA{
char nombre[15];
char apellidos[20];
char direccion[25];
int edad;
char telefono[12];
short borrado;
} agenda;
//char menu1( );
void menu(void);
void InsertaRegistro( );
void BorraRegistro( );
void ListaRegistros( );
int nRegistrosFichero( );
FILE * canal1;
void main( ){
int opcion;
char fichero[35];
strcpy(fichero,"c:\agenda.dir");
if((canal1=fopen(fichero, "r+b"))== NULL){
if((canal1=fopen(fichero, "a+b"))== NULL){
printf ("No se puede crear el fichero");
}else{
fclose (canal1);
if ((canal1=fopen(fichero, "r+b"))== NULL)
printf ("No se puede crear el fichero");
}
}
do{
//opcion = menu1();
menu();
scanf("%i",&opcion);
switch (opcion){
case 1:
InsertaRegistro();
break;
case 2:
BorraRegistro();
break;
case 3:
ListaRegistros();
break;
default:
break;
}
}while(opcion !=0);
fclose (canal1);
}
void InsertaRegistro()
{
printf("Modulo de insertar registrosn");
printf("Nombren");
gets(agenda.nombre);
printf("Apellidosn");
gets(agenda.apellidos);
printf("Direccionn");
gets(agenda.direccion);
printf("Edadn");
scanf("%i" ,&agenda.edad);
getchar( );
printf("Telefonon");
gets(agenda.telefono);
agenda.borrado = 0;
fseek(canal1,0,SEEK_END);
fwrite(&agenda,sizeof(agenda),1,canal1);
fflush(canal1);
}
void BorraRegistro( ){
int i,nr, numero_registros;
numero_registros = nRegistrosFichero( );
rewind(canal1);
printf ("Lista completa de registrosn");
for ( i= 1; i <= numero_registros ;i++){
fread (&agenda,sizeof (agenda) ,1, canal1);
if (agenda.borrado == 0)
printf(" % i. - %s " ,1,agenda.nombre);
}
printf("nNumero del registro a borrar, 0 para cancelarn");
scanf("%i" , &nr);
if (nr>0){
fseek (canal1, (nr-1)*sizeof (agenda) , SEEK_SET);
fread (&agenda, sizeof(agenda),1, canal1);
printf ("%s %s direc.= %s edad= %i Telef.= %sn",agenda.nombre , agenda.apellidos , agenda.direccion,
agenda.edad, agenda.telefono);
agenda.borrado=1 ;
fseek (canal1, (nr-1) *sizeof (agenda), SEEK_SET);
fwrite (&agenda,sizeof (agenda),1,canal1);
fflush(canal1);
}
}
void ListaRegistros()
{
int i,numero_registros;
numero_registros = nRegistrosFichero();
rewind (canal1);
printf("Lista completa de registrosn");
for( i= 1; i <= numero_registros ; i++)
{
fread (&agenda,sizeof(agenda),1, canal1);
if (agenda.borrado ==0)
printf (" %s %s direc.= %s edad= %i Telef.= %s %i n",agenda.nombre, agenda.apellidos,agenda.direccion,agenda.edad,agenda.telefono,agenda.borrado);
}
printf("pulsa una tecla para continuar");
getchar( );
}
void menu (void) {
printf("nAgenda de telefonosn");
printf("1. - Inserta un registron");
printf("2. - Borra un registron");
printf("3. - Lista todos los registrosn");
printf("0. - Terminarnn");
printf("Selecciona un opcionn");
//scanf("%i" ,&opcion);
//getchar( );
//return opcion;
}
int nRegistrosFichero()
{
fseek (canal1,0,SEEK_END);
return ftell(canal1)/sizeof(agenda);
}
AHORA TU PROGRAMA, !!Eres muy inteligente!!
#include <stdio.h>
#include <string.h>
#include <iostream.h>
struct TAGENDA{
char nombre[15];
char apellidos[20];
char direccion[25];
int edad;
char telefono[12];
short borrado;
} agenda;
//char menu1( );
void menu(void);
void InsertaRegistro( );
void BorraRegistro( );
void ListaRegistros( );
int nRegistrosFichero( );
FILE * canal1;
void main( ){
int opcion;
char fichero[35];
strcpy(fichero,"c:\agenda.dir");
if((canal1=fopen(fichero, "r+b"))== NULL){
if((canal1=fopen(fichero, "a+b"))== NULL){
printf ("No se puede crear el fichero");
}else{
fclose (canal1);
if ((canal1=fopen(fichero, "r+b"))== NULL)
printf ("No se puede crear el fichero");
}
}
do{
//opcion = menu1();
menu();
scanf("%i",&opcion);
switch (opcion){
case 1:
InsertaRegistro();
break;
case 2:
BorraRegistro();
break;
case 3:
ListaRegistros();
break;
default:
break;
}
}while(opcion !=0);
fclose (canal1);
}
void InsertaRegistro()
{
printf("Modulo de insertar registrosn");
printf("Nombren");
gets(agenda.nombre);
printf("Apellidosn");
gets(agenda.apellidos);
printf("Direccionn");
gets(agenda.direccion);
printf("Edadn");
scanf("%i" ,&agenda.edad);
getchar( );
printf("Telefonon");
gets(agenda.telefono);
agenda.borrado = 0;
fseek(canal1,0,SEEK_END);
fwrite(&agenda,sizeof(agenda),1,canal1);
fflush(canal1);
}
void BorraRegistro( ){
int i,nr, numero_registros;
numero_registros = nRegistrosFichero( );
rewind(canal1);
printf ("Lista completa de registrosn");
for ( i= 1; i <= numero_registros ;i++){
fread (&agenda,sizeof (agenda) ,1, canal1);
if (agenda.borrado == 0)
printf(" % i. - %s " ,1,agenda.nombre);
}
printf("nNumero del registro a borrar, 0 para cancelarn");
scanf("%i" , &nr);
if (nr>0){
fseek (canal1, (nr-1)*sizeof (agenda) , SEEK_SET);
fread (&agenda, sizeof(agenda),1, canal1);
printf ("%s %s direc.= %s edad= %i Telef.= %sn",agenda.nombre , agenda.apellidos , agenda.direccion,
agenda.edad, agenda.telefono);
agenda.borrado=1 ;
fseek (canal1, (nr-1) *sizeof (agenda), SEEK_SET);
fwrite (&agenda,sizeof (agenda),1,canal1);
fflush(canal1);
}
}
void ListaRegistros()
{
int i,numero_registros;
numero_registros = nRegistrosFichero();
rewind (canal1);
printf("Lista completa de registrosn");
for( i= 1; i <= numero_registros ; i++)
{
fread (&agenda,sizeof(agenda),1, canal1);
if (agenda.borrado ==0)
printf (" %s %s direc.= %s edad= %i Telef.= %s %i n",agenda.nombre, agenda.apellidos,agenda.direccion,agenda.edad,agenda.telefono,agenda.borrado);
}
printf("pulsa una tecla para continuar");
getchar( );
}
void menu (void) {
printf("nAgenda de telefonosn");
printf("1. - Inserta un registron");
printf("2. - Borra un registron");
printf("3. - Lista todos los registrosn");
printf("0. - Terminarnn");
printf("Selecciona un opcionn");
//scanf("%i" ,&opcion);
//getchar( );
//return opcion;
}
int nRegistrosFichero()
{
fseek (canal1,0,SEEK_END);
return ftell(canal1)/sizeof(agenda);
}
