Programación General > C/C++

 Dudas Con Estructuras Typedef

<< < (2/4) > >>

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&#9553; 0        ------------------   -----------------------------------------------         Proyecto N&#9553; 1        ------------------   -----------------------------------------------         Proyecto N&#9553; 2        ------------------   -----------------------------------------------         Proyecto N&#9553; 3        ------------------   -----------------------------------------------         Proyecto N&#9553; 4        ------------------   -----------------------------------------------         Proyecto N&#9553; 5        ------------------   -----------------------------------------------         Proyecto N&#9553; 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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa