alguien que pueda revisar mi codigo y ayudarme. esta en c y lo que necesito es que modifique bien y borre contacvtos del fichero solo que no se como hacerlo trate usando un fseek pero no se que hacer bien xc
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char nombre [35];
char mail [25];
int telefono;
}Contacto;
void menu (char* nombreArchivo);
Contacto crearContacto();
void guardarContacto(Contacto contacto, char* nombreArchivo);
void mostrarAgenda(char* nombreArchivo);
void borrarContacto(Contacto contacto, char* nombreArchivo);
void modificarContacto(Contacto contacto,char* nombreArchivo);
void pausar();
int i,buscar=0;
int main(){
char nombreArchivo[12]="agenda.bin";
menu (nombreArchivo);
}
void menu (char* nombreArchivo){
int opcion;
do{
system ("cls");
printf("1. Crear contacto:\n");
printf("2.Consultar agenda:\n");
printf("3.borrar contacto:\n");
printf("4.Modificar contacto:\n");
printf("5.salir:\n\n");
printf("ingresa una opcion: ");
scanf(" %d",&opcion);
if (opcion>0 && opcion < 6){
system("cls");
switch (opcion){
case 1:
guardarContacto(crearContacto(),nombreArchivo);
break;
case 2:
mostrarAgenda (nombreArchivo);
break;
case 3:
borrarContacto(Contacto(),nombreArchivo);
break;
case 4:
modificarContacto(Contacto(),nombreArchivo);
case 5:
printf("fin del programa \n");
//pausar();
break;
}
}
else {
printf("\nOpcion no contemplada\n");
pausar ();
}
}while (opcion!=5);
}
Contacto crearContacto(){
Contacto contacto;
printf("Nombre: ");
scanf(" %[^\n]", contacto.nombre);
printf("mail: ");
scanf(" %[^\n]", contacto.mail);
printf("Telefono: ");
scanf(" %d", &contacto.telefono);
return contacto;
}
void guardarContacto(Contacto contacto, char* nombreArchivo){
FILE* file= fopen(nombreArchivo, "ab");
if (file==NULL){
printf("Error al intentar acceder al archivo\n");
pausar();
}
else{
fwrite(&contacto, sizeof(Contacto), 1, file);
printf("\nContacto guardado!\n");
pausar();
fclose(file);
}
}
void mostrarAgenda(char* nombreArchivo){
FILE* file= fopen(nombreArchivo, "rb");
int i;
if (file==NULL){
printf("Error al intentar acceder al archivo\n");
pausar();
}
else{
Contacto contacto;
printf("%2s %-35s %-25s %-14s\n", "ID", "Nombre", "mail", "Telefono");
i = 0;
while (fread(&contacto, sizeof(Contacto), 1, file)){
i++;
printf("%-2u %-35s %-25s %-14d\n", i, contacto.nombre, contacto.mail, contacto.telefono);
}
fclose(file);
printf("\n\n");
pausar();
}
}
void borrarContacto(Contacto contacto,char*nombreArchivo){
FILE*file= fopen(nombreArchivo,"wb");
if (file==NULL){
printf("no se encontro el contacto a borrar");
pausar();
}
else {
fwrite(&contacto,sizeof(Contacto),1,file);
printf("\n Contacto eliminado:\n");
pausar();
fclose(file);
}
}
void modificarContacto(Contacto contacto, char*nombreArchivo){
FILE*file= fopen(nombreArchivo,"a+b");
Contacto vec[1];
printf("ingresa el ID de registro que deseas modificar: ");
scanf("%i",&buscar);
fseek(file, 100* sizeof(Contacto), SEEK_SET);
fwrite(&vec,sizeof(Contacto),1,file);
fseek(file, 100* sizeof(Contacto), SEEK_SET);
fread(&vec,sizeof(Contacto),1,file);
fgets(nombreArchivo,80,file);
ftell(file);
fclose(file);
}
void pausar(){
printf("Presione ENTER para continuar");
while (getchar() != '\n');
getchar();
printf("");
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char nombre [35];
char mail [25];
int telefono;
}Contacto;
void menu (char* nombreArchivo);
Contacto crearContacto();
void guardarContacto(Contacto contacto, char* nombreArchivo);
void mostrarAgenda(char* nombreArchivo);
void borrarContacto(Contacto contacto, char* nombreArchivo);
void modificarContacto(Contacto contacto,char* nombreArchivo);
void pausar();
int i,buscar=0;
int main(){
char nombreArchivo[12]="agenda.bin";
menu (nombreArchivo);
}
void menu (char* nombreArchivo){
int opcion;
do{
system ("cls");
printf("1. Crear contacto:\n");
printf("2.Consultar agenda:\n");
printf("3.borrar contacto:\n");
printf("4.Modificar contacto:\n");
printf("5.salir:\n\n");
printf("ingresa una opcion: ");
scanf(" %d",&opcion);
if (opcion>0 && opcion < 6){
system("cls");
switch (opcion){
case 1:
guardarContacto(crearContacto(),nombreArchivo);
break;
case 2:
mostrarAgenda (nombreArchivo);
break;
case 3:
borrarContacto(Contacto(),nombreArchivo);
break;
case 4:
modificarContacto(Contacto(),nombreArchivo);
case 5:
printf("fin del programa \n");
//pausar();
break;
}
}
else {
printf("\nOpcion no contemplada\n");
pausar ();
}
}while (opcion!=5);
}
Contacto crearContacto(){
Contacto contacto;
printf("Nombre: ");
scanf(" %[^\n]", contacto.nombre);
printf("mail: ");
scanf(" %[^\n]", contacto.mail);
printf("Telefono: ");
scanf(" %d", &contacto.telefono);
return contacto;
}
void guardarContacto(Contacto contacto, char* nombreArchivo){
FILE* file= fopen(nombreArchivo, "ab");
if (file==NULL){
printf("Error al intentar acceder al archivo\n");
pausar();
}
else{
fwrite(&contacto, sizeof(Contacto), 1, file);
printf("\nContacto guardado!\n");
pausar();
fclose(file);
}
}
void mostrarAgenda(char* nombreArchivo){
FILE* file= fopen(nombreArchivo, "rb");
int i;
if (file==NULL){
printf("Error al intentar acceder al archivo\n");
pausar();
}
else{
Contacto contacto;
printf("%2s %-35s %-25s %-14s\n", "ID", "Nombre", "mail", "Telefono");
i = 0;
while (fread(&contacto, sizeof(Contacto), 1, file)){
i++;
printf("%-2u %-35s %-25s %-14d\n", i, contacto.nombre, contacto.mail, contacto.telefono);
}
fclose(file);
printf("\n\n");
pausar();
}
}
void borrarContacto(Contacto contacto,char*nombreArchivo){
FILE*file= fopen(nombreArchivo,"wb");
if (file==NULL){
printf("no se encontro el contacto a borrar");
pausar();
}
else {
fwrite(&contacto,sizeof(Contacto),1,file);
printf("\n Contacto eliminado:\n");
pausar();
fclose(file);
}
}
void modificarContacto(Contacto contacto, char*nombreArchivo){
FILE*file= fopen(nombreArchivo,"a+b");
Contacto vec[1];
printf("ingresa el ID de registro que deseas modificar: ");
scanf("%i",&buscar);
fseek(file, 100* sizeof(Contacto), SEEK_SET);
fwrite(&vec,sizeof(Contacto),1,file);
fseek(file, 100* sizeof(Contacto), SEEK_SET);
fread(&vec,sizeof(Contacto),1,file);
fgets(nombreArchivo,80,file);
ftell(file);
fclose(file);
}
void pausar(){
printf("Presione ENTER para continuar");
while (getchar() != '\n');
getchar();
printf("");
}