Gestor de *'s

Khea

Soy khea bro
Noder
23 Dic 2018
122
69
Os dejo por aquí un programilla en C para gestionar un *.

Es muy sencillo, esta hecho con el fin de aprender a programar en c y tiene campos como nombre, apellidos, pueblo, codigo postal e IP.
Si tenéis alguna duda sobre el me comentáis, un saludo.

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
struct t_info{ char *nombre; char *apellido1; char *apellido2; char *municipio; char *codigoPostal; char *ip; }; struct t_Dox{ int ref; struct t_info informacion; };
void menu(struct t_Dox **);
void addDox(struct t_Dox **);
void eliminarDox(struct t_Dox **);
void buscarDox(struct t_Dox **);
void listarDox(struct t_Dox **);
void main(){ struct t_Dox doxeo; menu(&doxeo);
}
void menu(struct t_Dox **){ int opcion; do { printf("\tGESTION DE *'s\n"); printf("\t==================\n\n"); printf("1. ADD *\n"); printf("2. Eliminar *\n"); printf("3. Buscar *\n"); printf("4. Listado de *\n"); printf("5. Salir\n"); do { printf("Elige una opción entre 1 y 5: "); scanf("%d",&opcion); } while (opcion < 1 || opcion > 5); switch(opcion) { case 1: addDox(*); break; case 2: eliminarDox(*); break; case 3: buscarDox(*); break; case 4: listarDox(*); break; } } while (opcion != 5);
}
void addDox(struct t_Dox **){ int ref; char refChar[8]; printf("Dame el numero de referencia que valdrá para buscarlo mas tarde\n"); scanf("%d",&ref); *->ref=ref; itoa(ref,refChar,10); strcat(refChar,".txt"); FILE *f; if((f = fopen(refChar, "r"))==NULL) { f = fopen(refChar, "w+");  fprintf(f, "REFERENCIA: \n"); fprintf(f, "%d",ref); fprintf(f, "\n");  printf("Introduce el nombre: \n"); scanf("%s",&*->informacion.nombre); fprintf(f, "Nombre: \n"); fprintf(f, "%s ",&*->informacion.nombre); fprintf(f, "\n");  printf("Introduce el Primer apellido: \n"); scanf("%s",&*->informacion.apellido1); fprintf(f, "Primer Apellido: \n"); fprintf(f, "%s ",&*->informacion.apellido1); fprintf(f, "\n");  printf("Introduce el Segundo apellido: \n"); scanf("%s",&*->informacion.apellido2); fprintf(f, "Segundo Apellido: \n"); fprintf(f, "%s ",&*->informacion.apellido2); fprintf(f, "\n");  printf("Introduce municipio: \n"); scanf("%s",&*->informacion.municipio); fprintf(f, "Municipio: \n"); fprintf(f, "%s ",&*->informacion.municipio); fprintf(f, "\n");  printf("Codigo postal: \n"); scanf("%s",&*->informacion.codigoPostal); fprintf(f, "Codigo postal: \n"); fprintf(f, "%s ",&*->informacion.codigoPostal); fprintf(f, "\n");  printf("Ip: \n"); scanf("%s",&*->informacion.ip); fprintf(f, "IP: \n"); fprintf(f, "%s ",&*->informacion.ip); fprintf(f, "\n");  fclose(f); }else{ printf("YA EXISTE\n"); fclose(f); }
}
void eliminarDox(struct t_Dox **){ int ref; char refChar[8]; printf("Dame el numero de referencia a eliminar\n"); scanf("%d",&ref); itoa(ref,refChar,10); strcat(refChar,".txt"); if(remove(refChar)==-0){ printf("Archivo eliminado con exito"); printf("\n"); }else printf("No se encuentra el archivo");
}
void buscarDox(struct t_Dox **){ FILE *f; char buffer[1024]; char c; int ref; char refChar[8]; printf("Dame el numero de referencia Del *: \n"); scanf("%d",&ref); itoa(ref,refChar,10); strcat(refChar,".txt"); if((f = fopen(refChar, "r"))==NULL){ printf("Ningún * con referencia %d, si quiere crear un *, pulse 1 en el menú. \n",ref); }else{ fgets(buffer,1024,f); fgets(buffer,1024,f); fgets(buffer,1024,f); printf("Nombre: \n"); fgets(buffer, 1024, f); printf("%s",buffer); printf("\n"); fgets(buffer,1024,f); fgets(buffer, 1024, f); printf("Apellido 1: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("Apellido 2: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("Municipio: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("Codigo postal: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("IP: \n"); printf("%s",buffer); printf("\n"); fclose(f); }
}
void listarDox(struct t_Dox **){ WIN32_FIND_DATA findFileData; HANDLE hFind; hFind = FindFirstFile("*", &findFileData); if(hFind==INVALID_HANDLE_VALUE) { printf("La carpeta no existe o no se puede acceder"); } else { do { if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { printf("Directorio: %s",findFileData.cFileName); printf("\n"); } else { printf("%s\n",findFileData.cFileName); printf("\n"); } }while(FindNextFile(hFind,&findFileData)!=0); FindClose(hFind); }
}
 

MrMoon

Cada uno tiene su historia.
Noder
25 Dic 2018
124
35
pues si, la dinamica del ejercicio es la misma. Buen codigo con una limpieza y claridad de 10. Muchas gracias.
 

Thegjv

Moder fav <3
Miembro del equipo
Moderador
Noderador
Nodero
Noder
30 Dic 2018
1.844
549
Os dejo por aquí un programilla en C para gestionar un *.

Es muy sencillo, esta hecho con el fin de aprender a programar en c y tiene campos como nombre, apellidos, pueblo, codigo postal e IP.
Si tenéis alguna duda sobre el me comentáis, un saludo.

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
struct t_info{ char *nombre; char *apellido1; char *apellido2; char *municipio; char *codigoPostal; char *ip; }; struct t_Dox{ int ref; struct t_info informacion; };
void menu(struct t_Dox **);
void addDox(struct t_Dox **);
void eliminarDox(struct t_Dox **);
void buscarDox(struct t_Dox **);
void listarDox(struct t_Dox **);
void main(){ struct t_Dox doxeo; menu(&doxeo);
}
void menu(struct t_Dox **){
int opcion;
do
{
printf("\tGESTION DE *'s\n");
printf("\t==================\n\n");
printf("1. ADD *\n");
printf("2. Eliminar *\n");
printf("3. Buscar *\n");
printf("4. Listado de *\n");
printf("5. Salir\n");
do
{
printf("Elige una opción entre 1 y 5: ");
scanf("%d",&opcion);
} while (opcion < 1 || opcion > 5);
switch(opcion)
{
case 1:
addDox(*);
break;
case 2:
eliminarDox(*);
break;
case 3:
buscarDox(*);
break;
case 4:
listarDox(*);
break;
}
} while (opcion != 5);
}
void addDox(struct t_Dox **){ int ref; char refChar[8]; printf("Dame el numero de referencia que valdrá para buscarlo mas tarde\n"); scanf("%d",&ref); *->ref=ref; itoa(ref,refChar,10); strcat(refChar,".txt"); FILE *f; if((f = fopen(refChar, "r"))==NULL) { f = fopen(refChar, "w+");  fprintf(f, "REFERENCIA: \n"); fprintf(f, "%d",ref); fprintf(f, "\n");  printf("Introduce el nombre: \n"); scanf("%s",&*->informacion.nombre); fprintf(f, "Nombre: \n"); fprintf(f, "%s ",&*->informacion.nombre); fprintf(f, "\n");  printf("Introduce el Primer apellido: \n"); scanf("%s",&*->informacion.apellido1); fprintf(f, "Primer Apellido: \n"); fprintf(f, "%s ",&*->informacion.apellido1); fprintf(f, "\n");  printf("Introduce el Segundo apellido: \n"); scanf("%s",&*->informacion.apellido2); fprintf(f, "Segundo Apellido: \n"); fprintf(f, "%s ",&*->informacion.apellido2); fprintf(f, "\n");  printf("Introduce municipio: \n"); scanf("%s",&*->informacion.municipio); fprintf(f, "Municipio: \n"); fprintf(f, "%s ",&*->informacion.municipio); fprintf(f, "\n");  printf("Codigo postal: \n"); scanf("%s",&*->informacion.codigoPostal); fprintf(f, "Codigo postal: \n"); fprintf(f, "%s ",&*->informacion.codigoPostal); fprintf(f, "\n");  printf("Ip: \n"); scanf("%s",&*->informacion.ip); fprintf(f, "IP: \n"); fprintf(f, "%s ",&*->informacion.ip); fprintf(f, "\n");  fclose(f); }else{ printf("YA EXISTE\n"); fclose(f); }
}
void eliminarDox(struct t_Dox **){ int ref; char refChar[8]; printf("Dame el numero de referencia a eliminar\n"); scanf("%d",&ref); itoa(ref,refChar,10); strcat(refChar,".txt"); if(remove(refChar)==-0){ printf("Archivo eliminado con exito"); printf("\n"); }else printf("No se encuentra el archivo");
}
void buscarDox(struct t_Dox **){ FILE *f; char buffer[1024]; char c; int ref; char refChar[8]; printf("Dame el numero de referencia Del *: \n"); scanf("%d",&ref); itoa(ref,refChar,10); strcat(refChar,".txt"); if((f = fopen(refChar, "r"))==NULL){ printf("Ningún * con referencia %d, si quiere crear un *, pulse 1 en el menú. \n",ref); }else{ fgets(buffer,1024,f); fgets(buffer,1024,f); fgets(buffer,1024,f); printf("Nombre: \n"); fgets(buffer, 1024, f); printf("%s",buffer); printf("\n"); fgets(buffer,1024,f); fgets(buffer, 1024, f); printf("Apellido 1: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("Apellido 2: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("Municipio: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("Codigo postal: \n"); printf("%s",buffer); fgets(buffer, 1024, f); fgets(buffer, 1024, f); printf("\n"); printf("IP: \n"); printf("%s",buffer); printf("\n"); fclose(f); }
}
void listarDox(struct t_Dox **){ WIN32_FIND_DATA findFileData; HANDLE hFind; hFind = FindFirstFile("*", &findFileData); if(hFind==INVALID_HANDLE_VALUE) { printf("La carpeta no existe o no se puede acceder"); } else { do { if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { printf("Directorio: %s",findFileData.cFileName); printf("\n"); } else { printf("%s\n",findFileData.cFileName); printf("\n"); } }while(FindNextFile(hFind,&findFileData)!=0); FindClose(hFind); }
}
No había visto este post y me parece interesante cuanto menos, seguro que me viene bien jejeje
 
Arriba Pie