Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Gestione Libreria problema
Forum - C/C++ - Gestione Libreria problema

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Ascal (Normal User)
Newbie


Messaggi: 6
Iscritto: 14/06/2011

Segnala al moderatore
Postato alle 7:52
Mercoledì, 15/06/2011
Ciao tutti, sto sviluppando un progetto per la gestione di una libreria(con possibilità di cancellazione, ricerca e prestito di un libro) in C.
Nel momento in cui vado a compilare il codice però ottengo un errore fisso di "Build main error". Il codice è il seguente:
Edit

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define k 500
  5.  
  6.  
  7.  
  8. struct data{
  9.        int gg,mm,aaaa;
  10.        }dataprest;
  11.  
  12. struct biblioteca{
  13.        char titolo[15];
  14.        char autore[500];
  15.        char editore[k];
  16.        char prestito;
  17.        struct biblioteca* next;
  18.        }libro[k];
  19.        
  20. struct biblioteca temp; // struttura di appoggio per operazione su file
  21.  
  22. typedef struct biblioteca *bookPtr;
  23. typedef struct Node root;
  24. int n=0,sel,x,disp=0,sel2,a;
  25. char continua,tit[15];
  26.  
  27. void readfile(void);
  28. void inserimento(void);
  29. void prestito (char tit[15]);
  30. int controllo (char tit[15]);
  31. void contenuto(void );
  32. void delTitle(long pos);
  33. void cerTitle(void);
  34. long ricTitle(char);
  35. void cancTitle(void);
  36. void viscontenuto(void);
  37.  
  38. FILE *fp;
  39.  
  40. int main()
  41. {
  42.     bookPtr root = NULL;
  43.     fopen(root, "r");
  44. printf("\n\n#############Biblioteca#################");    
  45.  
  46. do{
  47.     printf("\n\nMenu':");    
  48.     printf("\n\n 1:Inserimento di un nuovo libro.");
  49.     printf("\n 2:Prestito di un libro.");
  50.     printf("\n 3:Controllare se un libro e' in prestito.");
  51.     printf("\n 4:Visualizzare il numero di libri in prestito da un certo ");
  52.     printf("giorno.");
  53.     printf("\n 5:Visualizzare il contenuto dell'intera biblioteca.");
  54.     printf("\n 6:Rimuovere libro da biblioteca.");
  55.     printf("\n 7:Exit.\n");
  56.     scanf("%d",&sel);
  57.  
  58.     switch(sel)
  59.     {
  60.          case 1:
  61.              inserimento();
  62.              break;          
  63.          case 2:
  64.              printf("\n\nInserire titolo del libro da prestare\n");
  65.              fflush(stdin);
  66.              gets(tit);
  67.              prestito(tit);
  68.              break;          
  69.          case 3:
  70.              printf("\n\nInserire titolo del libro da controllare\n");
  71.              fflush(stdin);
  72.              gets(tit);    
  73.              a=controllo(tit);
  74.              switch(a)
  75.              {
  76.                  case 0:
  77.                       printf("\n\nLibro in prestito...");
  78.                       scanf("%c",&continua);
  79.                       break;
  80.                  case 1:
  81.                       printf("\n\nLibro non in prestito...");
  82.                       scanf("%c",&continua);
  83.                       break;
  84.              }
  85.              break;        
  86.          case 4:
  87.              break;          
  88.          case 5:
  89.              contenuto();
  90.              break;          
  91.          case 6:        
  92.              cancTitle();
  93.              break;                  
  94.          case 7:
  95.              
  96.               break;
  97.      }  
  98.      
  99.   }while(sel!=7);
  100.   printf("\n\n");  
  101.   system("PAUSE");     
  102.   return 0;
  103. }
  104.  
  105. void readfile(void)
  106. {
  107.      FILE *stream, *fopen();
  108.      int numBooks, anno;
  109.      stream = fopen("books.txt", "r");
  110.      stream = numBooks;
  111.      char tit, aut, edit;
  112.      if((stream = fopen("books.txt", "r"))== NULL)
  113.      {
  114.      printf("\n\nIl file books.txt non può essere aperto.\n");
  115.      exit(-1);
  116.      }
  117.      int count;
  118.      for (count = 0; count< numBooks; count++)
  119.         {
  120.          fflush(stream);
  121.          fgets(tit, '\n', stream);
  122.          fgets(aut, '\n', stream);
  123.          fgets(edit, '\n', stream);
  124.         struct biblioteca *item = malloc(sizeof(struct biblioteca));
  125.        
  126.        
  127.     }
  128.     fclose(stream);
  129. }
  130.  
  131. void cancTitle(void)
  132. {
  133.      char pausa;
  134.      char tit[15];
  135.      long pos;
  136.      printf("\n\nInserire titolo del libro da rimuovere:...");
  137.      gets(tit);
  138.     // pos = ricTitle(tit);
  139.     /* if(pos == -1) {
  140.             printf("\n\nTitolo non presente");
  141.             return;
  142.             }*/
  143.     /* fflush(stream);
  144.      fgets(tit, '\n', stream);
  145.      bookPtr p = locateNode(root, tit);
  146.      if( p== NULL)
  147.      printf("\n\nCancellazione non può essere effettuato");
  148.      else
  149.      if(root == p);
  150.      next *p;
  151.      root = p;
  152.      else
  153.         {
  154.                 bookPtr q = root;
  155.                 while (q->next != p)
  156.                         q = q->next;
  157.                 q->next = p->next;
  158.         }
  159.         delete p;*/
  160.        
  161. //}
  162.  
  163. void contenuto();
  164. printf("\nConfermare cancellazione? (S/N) ");
  165. scanf("%c", &pausa);
  166. if(pausa == 'S' || pausa == 's') {
  167.          delTitle(pos);
  168.          return;
  169.          }
  170.          }
  171.  
  172.  void delTitle(long pos)
  173. {
  174.      
  175.       gets(temp.titolo);
  176.       strcpy(temp.titolo, "");
  177.       gets(temp.autore);
  178.       strcpy(temp.editore, "");
  179.       gets(temp.editore);
  180.       strcpy(temp.autore, "");
  181.       fp= fopen("books.txt", "r+");
  182.       fseek(fp, pos, 0);
  183.       fwrite(&temp, sizeof(struct biblioteca), 1, fp);
  184.       fclose(fp);
  185.      }
  186.      
  187. void cercTitle(void)
  188. {
  189.      char pausa;
  190.      char tit;
  191.      long pos;
  192.      printf("\n\t\tRICERCA TITOLO.");
  193.      printf("\n\t\t-------\n\n");
  194.      gets(tit);
  195.      //pos = ricTitle(tit);
  196.      }
  197.      
  198. long ricTitle(char tit)
  199. {
  200.      int n;
  201.      long pos = 0L;
  202.      fp = fopen("books.txt", "r");
  203.      for(;;) {
  204.              n = fread(&temp, sizeof(struct biblioteca), 1, fp);
  205.              if( n== 0){
  206.                  fclose(fp);
  207.                  pos = -1;
  208.                  return (pos);
  209.              }
  210.             else
  211.              if(strcmp(tit, temp.titolo) == 0)
  212.              {
  213.                            pos = ftell(fp);
  214.                            fclose(fp);
  215.                            return(pos-sizeof(struct biblioteca));
  216.              }  
  217.              }
  218.              }
  219. void inserimento(void)
  220. {
  221.     n++;
  222.     printf("\n\nInserire i dati relativi al libro N. %d",n);
  223.     printf("\n\nTitolo: ");
  224.     fflush(stdin);
  225.     gets(libro[n].titolo);
  226.     libro[n].prestito='f';
  227.     printf("\n\nAutore: ");
  228.     gets(libro[n].autore);
  229.     printf("\n\nEditore: ");
  230.     gets(libro[n].editore);  
  231.     printf("\n\nDati in memoria...");
  232.     scanf("%c",&continua);          
  233. }  
  234.  
  235. void prestito(char tit[15])
  236. {
  237.     disp=0;
  238.     for(x=1;x<=n;x++)
  239.     {
  240.         if(strcmp(libro[x].titolo,tit)==0)
  241.         {
  242.             disp=1;          
  243.             if(libro[x].prestito=='f')
  244.             {
  245.                 printf("\n\nVuoi continuare con il prestito di questo libro?");
  246.                 printf("\n 1: Si.\n 2: No.\n");
  247.                 scanf("%d",&sel2);
  248.                 switch(sel2)
  249.                 {
  250.                     case 1:
  251.                         libro[x].prestito='v';
  252.                         printf("\nPrestito effettuato...");
  253.                         scanf("%c",&continua);
  254.                     case 2: break;                        
  255.                 }
  256.             }  
  257.             else
  258.             {
  259.                 printf("\nSpiacenti libro gia' in prestito...");                                    
  260.                 scanf("%c",&continua);
  261.             }
  262.         }                
  263.     }              
  264.     if (disp==0)
  265.     {
  266.         printf("\n\nSpiacenti questo libro non e' presente in ");
  267.         printf("questa biblioteca...");
  268.         scanf("%c",&continua);
  269.     }
  270. }  
  271.  
  272. int controllo(char tit[15])
  273. {
  274.     for(x=1;x<=n;x++)
  275.     {
  276.         if(strcmp(libro[x].titolo,tit)==0)
  277.         {    
  278.             if(libro[x].prestito=='v')
  279.                 a=0;
  280.             else
  281.                 a=1;
  282.         }
  283.     }    
  284.     return a;
  285. }            
  286.  
  287. void contenuto(void)
  288. {
  289.      printf("---------------------------------------------------------------");
  290.      printf("\n                       CONTENUTO BIBLIOTECA\n");
  291.      printf("---------------------------------------------------------------");
  292.      printf("\nN:libro non disponibile  S: libro disponibile\n");
  293.      printf("---------------------------------------------------------------");
  294.      printf("\n|Prestito|\tTitolo libro|\tAutore|\tEditore|\tDataPubblicazione|\n");
  295.      printf("---------------------------------------------------------------");    
  296.      for(x=1;x<=n;x++)
  297.      {
  298.      printf("\n|   %c    |",libro[x].prestito);
  299.      printf("%s|",temp.titolo);
  300.      printf("%s|", temp.autore);
  301.      printf("%s|", temp.editore);
  302.      printf("\n\n---------------------------------------------------------------");                                  
  303.      }
  304.  
  305. void viscontenuto(void)
  306. {
  307.     /* int n; char pausa;
  308.      fp = fopen("books.txt", "r");
  309.      do {
  310.        n = fread(&temp, sizeof(struct biblioteca), 1, fp);
  311.        if( n== 0) fclose(fp);
  312.       else {
  313.        contenuto();
  314.        scanf("%c", &pausa);
  315.            }*/
  316.              
  317.         }
  318.      while(n!= 0);
  319.   }



Esattamente la riga in causa è la terzultima( pos= ricTitle(tit)). Spero possiate aiutarmi.

Ultima modifica effettuata da Ascal il 15/06/2011 alle 22:23
PM Quote
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 8:24
Mercoledì, 15/06/2011
attenzione, il sorgente non è stato copiato del tutto. Mancano alcune funzioni!


Yep, I came back :P
PM Quote
Avatar
Ascal (Normal User)
Newbie


Messaggi: 6
Iscritto: 14/06/2011

Segnala al moderatore
Postato alle 13:23
Mercoledì, 15/06/2011
Ho modificato il mio post, ora c'è tutto il codice. :)

PM Quote
Avatar
inconcepibile (Member)
Newbie


Messaggi: 11
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 19:33
Mercoledì, 15/06/2011
L'errore credo sia dovuto al fatto che manca la funzione ricTitle, che io sinceramente non ho visto nel codice che hai postato.


Non mi importa chi sei,
non mi interessa cosa vuoi,
l’importante e che insegui i tuoi desideri
e combatti per un mondo migliore;
se così non fosse tutto ciò in cui crediamo cesserà
e rimarrà solo un mondo senza sogni e senza speranze...

THE GAME
PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 21:10
Mercoledì, 15/06/2011
Manca la funzione ricTitle!!


Giuseppe
PM Quote
Avatar
Ascal (Normal User)
Newbie


Messaggi: 6
Iscritto: 14/06/2011

Segnala al moderatore
Postato alle 22:22
Mercoledì, 15/06/2011
Avevo postato il codice sbagliato. Ora c'è tutto e comunque l'errore persiste.
Comunque vi ringrazio per le risposte immediate.

PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 8:07
Giovedì, 16/06/2011
A me funziona, da parecchi warning, ma nessun errore del tipo da te segnalato, ovvero Build Main Error. Parte normalmente. Ah ho visto un paio di errori all'inizio del codice:

fopen(books.txt, "r");

non è così ma è:

fopen("books.txt", "r");

A meno che non fai una define col nome del file come:

#define libri "books.txt"
....
e poi

fopen(books.txt,"r");


Giuseppe
PM Quote
Avatar
Ascal (Normal User)
Newbie


Messaggi: 6
Iscritto: 14/06/2011

Segnala al moderatore
Postato alle 12:44
Giovedì, 16/06/2011
Ti ringrazio! Ma funziona anche rimuovendo le "/*" che stanno a "bypassare" alcuni tratti di codice?

PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 16:19
Giovedì, 16/06/2011
A me funziona bene si


Giuseppe
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo