Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: clodan en 12 Octubre 2010, 17:36 pm



Título: Pregunta rapida y sencilla (para los que saben ¬¬)
Publicado por: clodan en 12 Octubre 2010, 17:36 pm
Cuando yo inicializo un arreglo en base a una estructura, como se llama el espacio qe qeda dentro en vacio...

osea, yo necesito un codigo que genere automaticamente un codigo para un libro, y para eso necesito saber cual fue el ultimo que se hizo, pero no se como hacerlo ¬¬ a ver... muestro el codigo qe tengo hasta ahora:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct sis{
  5.       char cod;
  6.       char titu;
  7.       char aut;
  8.       char edit;
  9.       int ano;
  10.       char gene;
  11.       };
  12.  
  13. int agregar ();
  14. int ver();
  15.  
  16. char * prog="DATA.file";
  17. FILE * pf = NULL;
  18. struct sis base[3000];
  19. int main(int argc, char *argv[]){
  20.  int x;
  21.  pf = fopen( prog, "a+b");
  22.  if (pf==NULL){
  23.        printf("Error al Crear, Abrir o Modificar el Archivo");
  24.        while (getchar()!='\n');
  25.        return 0;
  26.        }
  27.  printf("DATA.file abierto.\n");
  28.  printf("Leyendo Datos de DATA.file. Por favor espere...\n\n");
  29.  while (!feof(pf)){
  30.        fread(&base, sizeof(base), 1, pf);
  31.        }
  32.  
  33.  
  34.  printf("....Sistema Interno....\n\n");
  35.  printf("Eliga la opcion que desea realizar:\n");
  36.  printf("1.Agregar Libro Nuevo\n");
  37.  printf("2.Ver Libros Actuales\n");
  38. scanf("%d",&x);
  39.  switch (x){
  40.         case 1:{
  41.              agregar ();
  42.              break;
  43.         }
  44.         case 2:{
  45.              ver ();
  46.              break;
  47.         }
  48.  }
  49.  
  50.  while (getchar()!='\n');
  51.  return 0;
  52. }
  53.  
  54. int agregar(){
  55.  
  56.    ACA ES DONDE TENGO QUE PONER EL CODIGO QUE LES DIGO
  57.    PARA QUE ME GENERE AUTOMATICAMENTE EL CODIGO DEL LIBRO :S
  58.  
  59.    printf("Ingrese el titulo del Libro\n");
  60.    return 0;
  61.    }
  62.  
  63. int ver(){
  64.  
  65.    return 0;
  66.    }

A lo que me refiero es que necesito saber qe valor se guarda temporalmente en una variable hasta que se le asigna algo.

Osea, como se le dice?? EOF???


Título: Re: Pregunta rapida y sencilla (para los que saben ¬¬)
Publicado por: SirLanceCC en 13 Octubre 2010, 03:39 am
El valor que tiene una variable antes de que le asignes algo es: lo que tenía esa posición de memoria justo antes de crear la variable, es decir basura, un misterio. No puedes saber.

En otros lenguajes se le asigna un valor a cada variable al declararla automáticamente (casi siempre 0, false, o NULL). En C/C++ eso no pasa. Siempre puedes inicializar tu variable al declararla.
Código
  1. int variable = 0;


Título: Re: Pregunta rapida y sencilla (para los que saben ¬¬)
Publicado por: clodan en 13 Octubre 2010, 03:54 am
El valor que tiene una variable antes de que le asignes algo es: lo que tenía esa posición de memoria justo antes de crear la variable, es decir basura, un misterio. No puedes saber.

En otros lenguajes se le asigna un valor a cada variable al declararla automáticamente (casi siempre 0, false, o NULL). En C/C++ eso no pasa. Siempre puedes inicializar tu variable al declararla.
Código
  1. int variable = 0;

ahh listoo!! entonces puedo poner algo asi:

Código
  1. struct sis base[3000]={0};

entonces en los 3000 lugares, la primer variable, que es el codigo va a ser 0, no?


Título: Re: Pregunta rapida y sencilla (para los que saben ¬¬)
Publicado por: SirLanceCC en 29 Octubre 2010, 06:25 am
Sí, pero no es así exactamente como funciona.

Código
  1. int arreglo1[3] = {1,2,3};  // [1|2|3]
  2. int arreglo2[5] = {1,2,3};  // [1|2|3|0|0]
  3. int arreglo3[3] = {1};      // [1|0|0]
  4. int arreglo4[3] = {};       // [0|0|0]
  5. int arreglo5[3];            // [?|?|?]
  6.  


Título: Re: Pregunta rapida y sencilla (para los que saben ¬¬)
Publicado por: Oblivi0n en 29 Octubre 2010, 21:45 pm
en vez de "char cod" ponlo como int y vas incrementando/decrementando segun se vayan metiendo / sacando libros

(Creo que es lo que dices, sino es que me lié  :xD )