Programación General > C/C++
Dudas Con Estructuras Typedef
cris_maco:
perdona, es que no veo donde has creado el array de struct
Hammerstrike:
--- Cita de: "cris_maco" --- perdona, es que no veo donde has creado el array de struct
--- Fin de la cita ---
La verdad lo tengo definido poco mas abajo de los includes, despues de definir la estructura...
salu2
Hammerstrike:
Esta es la salida del programa
--- Código: Text --- Estos son los proyectos. Proyecto N║ 0 ------------------ ----------------------------------------------- Proyecto N║ 1 ------------------ ----------------------------------------------- Proyecto N║ 2 ------------------ ----------------------------------------------- Proyecto N║ 3 ------------------ ----------------------------------------------- Proyecto N║ 4 ------------------ ----------------------------------------------- Proyecto N║ 5 ------------------ ----------------------------------------------- Proyecto N║ 6 ------------------ ----------------------------------------------- Con cual de ellos desea trabajar?
Abajo de cada proyecto deberia aparecer los datos de los proyectos, de la siguiente manera (o mas menos)
--- Citar ---Nombre:hola
Descripcion:Esto es una prueba
Ubicacion:proyectos/hola
---------------------------------------------------------------
Nombre:hola
Descripcion:nuevamente es una prueba
Ubicacion:proyectos/hola
---------------------------------------------------------------
Nombre:Blax
Descripcion:An interesting software
Ubicacion:proyectos/blax
---------------------------------------------------------------
Nombre:Blax
Descripcion:an interesting software
Ubicacion:proyectos/blax
---------------------------------------------------------------
Nombre:Hola
Descripcion:trabajando con linux
Ubicacion:proyectos/hola
---------------------------------------------------------------
Nombre:Gprom
Descripcion:GNU Project manager.
Ubicacion:/proyectos/gprom
---------------------------------------------------------------
Nombre:Ktechlab
Descripcion:Kde electronic suite
Ubicacion:proyectos/ketchlab
---------------------------------------------------------------
---------------------------------------------------------------
Cantidad de registros= 7
Presione una tecla para continuar...
--- Fin de la cita ---
salu2
Hammerstrike:
Como el programa es GPL les dejo el codigo
--- Citar ---#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define null 0
#define max 80
#define max1 100
char c;
//Para manejar errores...
//hacemos una estructura global (typedef) para los proyectos (proyectos.db)
typedef struct {
char nombre[max];
char desc[max];
char loc[max];
}project;
project pos[max1];
/*******************************************
*Definicion de funciones para el programa *
*******************************************/
void main_menu();
void new_project();
void edit();
int listing();
project read_structure();
int select();
/******************************************/
project read_structure(){
//Puntero al archivo...
char line[100];
FILE *id;
int i=-1;
int count=-1;
id=fopen("proyectos.db","r");
while (!feof(id)){
fgets(line,max1,id);
i++;
count++;
switch (i) {
case 1:{strcpy(pos[count].nombre,line);break;}
case 2:{strcpy(pos[count].desc,line);break;}
case 3:{strcpy(pos[count].loc,line);break;}
default:{/*Leera el delimitador, por lo tanto debemos agregar un proyecto nuevo.*/
count++;
i=-1;break;
}
}
}
return (pos[count]);
}
/*****************************************************************************************/
int select(){
int location=0,i=0;
int position;
position=listing();
printf("\t\tSeleccionar proyecto\n\t\t--------------------------\n");
printf("Estos son los proyectos.");
for (i=0;i<position;i++){
printf("\tProyecto Nº %d\n\t------------------\n",i);
printf("%s\n",pos.nombre);
printf("%s\n",pos.desc);
printf("%s\n",pos.loc);
//Ahora el programa debe leer un delimitador. Para ello usamos printf
printf("-----------------------------------------------\n\n");
}//for
printf("Con cual de ellos desea trabajar?\n->");
scanf("%d",&location);
printf("Estara trabajando con el proyecto %d",location);
printf("\nPresione una tecla para continuar.");
getchar();
return location;
}
int listing()
{
/******************************************************************************************
LISTING()
---------
Procedimiento que imprime por pantalla los datos del archivo de proyectos. Si no encuentra
el archivo, envia una señal de error
*******************************************************************************************/
char line[100];
//Puntero al archivo...
FILE *id;
int count=0;
int countreg=0;
id=fopen("proyectos.db","r");
//Chequeamos si el archivo existe...Es extraño. En windows funciona bien. Aqui se ve feo.
if (id==null)
{
system("cls");
printf("Error 404. Archivo no encontrado.\n\a\nAgregar entradas primero.\nPresione una tecla para continuar");
c=getchar();
main_menu();
}
//Leemos el archivo hasta el final de su contenido.
system("cls");
while (!feof(id)){
fgets(line,100, id);
count++;
printf("%s\n ",line);
if (count==4){
count=0;
countreg++;
}
}
fclose(id);
printf("Cantidad de registros= %d\n",countreg);
printf("Presione una tecla para continuar...\n");
c=getchar();
return countreg;
}
//------------------------------------------------------------------------------
void edit_menu() {
int opt;
do {
do{
system("cls");
printf("\n Editar Archivo \n");
printf(" ------------------------------------------------------------- \n");
printf("\n 1.- Mostrar la Lista de Archivos \n 2.- Agregar Archivo \n 3.- Eliminar Archivo \n 4.-Guardar Archivo \n 5.- Volver al Menu Principal \n\n");
printf(" ------------------------------------------------------------- \n");
printf("Elija la opcion que desee realizar: ");
scanf("%d",&opt);
switch (opt){
case 1:{;break;}
case 2:{;break;}
case 3:{;break;}
case 4:{;break;}
case 5:{;break;}
case 6:{system("cls");return;break;}
default :{system("cls");getchar();break;}
}
}while (opt<1 || opt>6);
}while (getchar(), getchar() != 'n');
}
//------------------------------------------------------------------------------
int main()
{
project pos[max1];
system("cls");
read_structure();
main_menu();
return 0;
}
//------------------------------------------------------------------------------
void main_menu(){
int opt;
int location;
do
{
do{
system("cls");
printf("Bienvenido al gestor de proyectos\n\n");
printf("Ingrese una opcion\n\n");
printf("\t 1.- Crear.\n\t 2.- Listar.\n\t 3.- Seleccionar.\n\t 4.- Eliminar.\n\t 5.- Editar.\n\t 6.- Salir.\n");
scanf("%d",&opt);
switch (opt){
case 1:{new_project();break;}
case 2:{listing();break;}
case 3:{location=select();break;}
case 4:{;break;}
case 5:{edit_menu();break;}
case 6:{system("cls");return;break;}
default :{system("cls");getchar();break;}
}
}while(opt < 1 || opt > 6);
}while(getchar(), getchar() != 'n');
}
//------------------------------------------------------------------------------
void new_project(){
char dummy[50];
/************************************************************************************************
NEW_PROJECT()
-------------
Procedimiento que permite al usuario crear un proyecto y guardarlo en el archivo proyectos.db.
*************************************************************************************************/
//Pedimos los datos al usuario
project new_project;
system("cls");
printf("\t\tCreacion de proyectos\n\t\t------------------------------\n");
printf("\tIngrese el nombre del proyecto\n");
scanf("%s[^\n]",new_project.nombre);
gets(dummy);
printf("\tIngrese la descripcion\n");
gets(new_project.desc);
//scanf("%s[^\n]",new_project.desc);
printf("\tIngrese la ubicacion del proyecto\n");
scanf("%s[^\n]",new_project.loc);
//Ya tenemos los datos del proyecto. Ahora escribimos en el archivo
FILE *id;
id=fopen("proyectos.db","a");
fprintf(id,"Nombre:%s\n",new_project.nombre);
fprintf(id,"Descripcion:%s\n",new_project.desc);
fprintf(id,"Ubicacion:%s\n",new_project.loc);
//Delimitador...
fprintf(id,"---------------------------------------------------------------\n");
fclose(id);
return;
//El archivo esta escrito...
}//End new project
--- Fin de la cita ---
Y debo decir que me falta mas de la mitad
jajajaja
salu2 y gracias
cris_maco:
probaste a que esta bien escrito en el fichero binario y que luego lo lees bien? Me refiero a antes de meterlo en los campos del struct.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa