elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucion] eliminar/editar contenido de un fichero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucion] eliminar/editar contenido de un fichero  (Leído 726 veces)
lordluisiv

Desconectado Desconectado

Mensajes: 66


Ver Perfil
[Solucion] eliminar/editar contenido de un fichero
« en: 5 Mayo 2019, 16:01 pm »

Buenas :)
 aqui esta la solucion, ahora guarda, carga y edita los datos :)

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <cctype>

/*====================
[Defines]
======================*/
#define cls system("CLS");
#define File_OpenRead doc=fopen("DB_","r");
#define File_OpenWrite doc=fopen("DB_","a+");
/*====================
[Funciones]
======================*/
void guardar();
void cargar();
void buscar();
/*====================
[Base de Datos]
======================*/
FILE *doc;
struct DATA{
char nombre[13];
int edad;
};


/*====================
[Programa]
======================*/
int main()
{
fclose(doc);
int selec;
printf("1.Guardar \n2.Cargar \n3.Buscar \n"); fflush(stdin);
selec = getch();

switch(selec){
case '1':{
cls
guardar();
break;
}
case '2':{
cls
cargar();
break;
}
case '3':{
buscar();
break;
}
}
cls
printf("[ESA OPCION NO EXISTE]\n");
main();

return 0;
}

void guardar()
{
DATA e;
int selec;

File_OpenWrite // abriendo el archivo.

if(doc == NULL)
{
cls
printf("[ERROR EN EL ARCHIVO]\n");
main();
}
do{
cls
printf("Ingrese su nombre: "); fflush(stdin);
gets(e.nombre);

for (char i = 0;  i < strlen(e.nombre) ; i++){
    e.nombre[i] = tolower(e.nombre[i]);
}

printf("Ingrese su edad: "); fflush(stdin);
scanf("%d", &e.edad);

printf("\n\n---Nombre:%s \n---edad: %d\n", e.nombre, e.edad);
printf("\n\n1.desea finalizar el registro? \n2.Registrar otro usuario? \nElija una opcion porfavor: "); fflush(stdin);
selec = getch();
fwrite(&e, sizeof(e),1,doc);

}while(selec == '2');

fclose(doc);
cls
main();
}

void cargar()
{
File_OpenRead
DATA e;

if(doc == NULL)
{
cls
printf("[ERROR EN EL ARCHIVO]\n");
main();
}

fread(&e, sizeof(e),1,doc);
while(!feof(doc)){
printf("\nNombre.....: %s", e.nombre);
printf("\nEdad.........: %d", e.edad);
fread(&e, sizeof(e),1,doc);
}

printf("\n\nPrecione una tecla para volver...");

fclose(doc);
getch();
cls
main();
}

void buscar()
{
  File_OpenWrite
DATA e;

char b_nombre[13];

if(doc == NULL)
{
cls
printf("[ERROR EN EL ARCHIVO]\n");
main();
}
cls
printf("Ingrese el nombre a buscar: \n");fflush(stdin);
gets(b_nombre);

for (char i = 0;  i < strlen(b_nombre) ; i++){
   b_nombre[i] = tolower(b_nombre[i]);
}
cls

while(strcmp(e.nombre, b_nombre)){

fread(&e, sizeof(e),1,doc);

if(feof(doc)){
cls
printf("[NO SE ENCONTRARON RESULTADOS]\n");
main();
}
}

printf("\nNombre.....: %s", e.nombre);
printf("\nEdad.........: %d\n", e.edad);

printf("\n\nPrecione una tecla para volver...");

fclose(doc);
getch();
cls
main();
}

Listo ya logre conseguir la solucion al problema y dejo la solucion aqui para los que necesiten hacer algo parecido..

Funcion: Funciona creando un archivo temporar y mientras que no se encuentre el dato que estas buscando se van guardando los otros...

Código:
void eliminar()
{
File_OpenRead
FILE *d_temp; d_temp = fopen("DB_TEMP", "w");

DATA e;
int b_cedula;

if(doc == NULL)
{
cls
printf("[ERROR EN EL ARCHIVO]\n");
main();
}

cls
printf("Escriba el numero de cedula del usuario que desea eliminar: "); fflush(stdin);
scanf("%d", &b_cedula);

cls
fread(&e, sizeof(e),1,doc);

while(!feof(doc)){

if((e.cedula == b_cedula)==0){
fwrite(&e, sizeof(e),1,d_temp);
}else{
printf("Estos datos han sido eliminados...");
printf("\nNombre.....: %s", e.nombre);
printf("\nCedula.....: %d", e.cedula);
printf("\nEdad.......: %d\n", e.edad);
}

fread(&e, sizeof(e),1,doc);
}

printf("\n\nPrecione una tecla para volver...");

fclose(d_temp);
fclose(doc);
remove("DB_");
rename("DB_TEMP", "DB_");
getch();
cls
main();
}


« Última modificación: 18 Mayo 2019, 21:55 pm por lordluisiv » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
editar Fichero
Juegos y Consolas
Syzao 0 720 Último mensaje 4 Junio 2006, 22:11 pm
por Syzao
Editar Fichero
Juegos y Consolas
Syzao 0 772 Último mensaje 4 Junio 2006, 22:12 pm
por Syzao
como editar el contenido de un iframe
Desarrollo Web
polarko 1 1,177 Último mensaje 19 Marzo 2014, 23:25 pm
por #!drvy
Editar fichero win32
Programación C/C++
XKC 4 1,010 Último mensaje 31 Agosto 2018, 17:41 pm
por MCKSys Argentina
Ver y editar archivos tipo excel, en red (dataGridView + Agregar, eliminar, editar, consultar)
.NET (C#, VB.NET, ASP)
Enemy 0 589 Último mensaje 27 Septiembre 2021, 04:35 am
por Enemy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines