Programma che funziona con dev c ma non con netbeans

di il
15 risposte

Programma che funziona con dev c ma non con netbeans

Buonasera a tutti , il mio problema ho molto semplice , ho compilato una lista con dev c++ correttamente , ma una volta che invece ho fatto la prova con netbeans mi trova degli errori e non parte . Vi sarei grato se qualcuno tra di voi avesse netbeans tra i programmi cosi da aiutarmi a trovare le cose che non vanno grazie . vi lascio qui il programma in questione.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STR 32
#define FILENAME "test.dat"

struct bib{
       char title[MAX_STR];
       char author[MAX_STR];
       char coll[MAX_STR];
       
       struct bib *next;
       };
       typedef struct bib bib;
       typedef struct bib *bib_p;
       
       bib_p Add_to_list(bib_p begin,char title[],char auth[],char coll[]);
       bib_p Add_in_order(bib_p head,char title[],char auth[],char coll[]);
       void print_list(bib_p p);
       int Save_to_file(bib_p begin,char file_name[]);
       int getline(char buffer_line[],int);
       int Search_in_list(bib_p head,char trial[]);
       bib_p Read_from_file(bib_p begin,char file_name[]);


int main(int argc, char** argv) {
 
             char buffer_title[MAX_STR];
             char buffer_name[MAX_STR];
             char buffer_coll[MAX_STR];
             char line[MAX_STR];
             int cont;
             char trial[MAX_STR];
             
             
             bib_p head=NULL;
             
             printf("Inserimento dati. . .\n\n");
             head=Read_from_file(head,FILENAME);
             
             
             if(head!=NULL)
             {
                           printf("\nEcco i dati dal file %s:\n\n",FILENAME);
                           print_list(head);
                           }
             
                           
             while(cont)
             {
                        printf("\nInserire il titolo dell'opera:\n");
                        getline(buffer_title,MAX_STR);
                        if(strcmp(buffer_title,"exit")==0)
                        break;
                        printf("Inserire l'autore:\n");
                        getline(buffer_name,MAX_STR);
                        if(strcmp(buffer_name,"exit")==0)
                        break;
                        printf("Inserire la collocazione dell'opera:\n");
                        getline(buffer_coll,MAX_STR);
                        if(strcmp(buffer_coll,"exit")==0)
                        break;
                        
                        printf("\n\nPer terminare digitare exit. . .\n\n");
                        if(strcmp(buffer_title,"")!=0&&strcmp(buffer_name,"")!=0&&strcmp(buffer_coll,"")!=0)
                        head=Add_in_order(head,buffer_title,buffer_name,buffer_coll);
                        }
                        printf("\n\nInserire dati per la ricerca: ");
                        scanf("%s",trial);
                          
                        Search_in_list(head,trial);
                        Save_to_file(head,FILENAME);
                        printf("Indice: \n\n");
                        print_list(head);
                        system("pause");
    return (EXIT_SUCCESS);
}

bib_p Add_to_list(bib_p begin,char title[],char auth[],char coll[])
{
      bib_p p;
      bib_p curr;
      
      p=(bib*)malloc(sizeof(bib));
      strcpy(p->title,title);
      strcpy(p->author,auth);
      strcpy(p->coll,coll);
      
      p->next=NULL;
      
      if(begin==NULL)
      return p;
      
      else
      {
          begin=curr;
          while(curr->next!=NULL)
          curr=curr->next;
          curr->next=p;
          return begin;
          }
          }
          
int Save_to_file(bib_p begin,char file_name[])
{
    bib_p p;
    FILE *fp;
    
    printf("Salvataggio. . .\n\n");
    
    fp=fopen(file_name,"w");
    if(fp==NULL)
    {
                printf("Impossibile aprire in scrittura il file %s. . .\n\n",file_name);
                return -1;
                }
                
                p=begin;
                while(p!=NULL)
                {
                              fwrite(p,sizeof(bib),1,fp);
                              p=p->next;
                              }
                              return 0;
                              }
                              
bib_p Read_from_file(bib_p begin,char file_name[])
{
      
      bib_p start;
      bib bib_item;
      FILE *fp;
      int n;
      
      start=begin;
      
      fp=fopen(file_name,"r");
      
      if(fp==NULL)
      {
                  printf("Impossibile aprire il file %s in lettura. . .\n\n",file_name);
                  printf("Nessun archivio importato!!\n\n");
                  return begin;
                  }
                  
                  start=begin;
                  n=1;
                  while(n>0)
                  {
                            n=fread(&bib_item,sizeof(bib),1,fp);
                            printf("%d)  %4s  %4s  %4s  \n",n,bib_item.title,bib_item.author,bib_item.coll);
                            if(n>0)
                            start=Add_in_order(start,bib_item.title,bib_item.author,bib_item.coll);
                            }
                            return start;
                            }
                            
void print_list(bib_p p)
{
     if(p!=NULL)
     {
                printf("\n%4s  %4s  %4s  \n\n",p->title,p->author,p->coll);
                p=p->next;
                print_list(p);
                }
                }
                
int Search_in_list(bib_p head,char trial[])
{
    printf("\n\nRicerca elementi in lista...\n");
    if(head==NULL)
    {
                  printf("\nImpossibile individuare il percorso specificato\n");
                  return -1;
                  }
                  
    while(head!=NULL)
    {
                     if(strcmp(head->title,trial)==0||strcmp(head->author,trial)==0||strcmp(head->coll,trial)==0)
                     {
                                                                                                                 printf("\n\nElemento trovato!!\n");
                                                                                                                 return 1;
                                                                                                                 }
                     else
                     printf("Elemento non trovato!!\n\n");
                     
                     head=head->next;
                     
                     }
                     
                     
                     return 0;
                     }
                                                                                                                                               
                
void insert(bib_p a,bib_p b,bib_p q)
{
     if(a->next!=b)
     {
                   printf("Errore nella lista\n\n");
                   return;
                   }
                   a->next=q;
                   q->next=b;
                   }
                   
bib_p Add_in_order(bib_p head,char title[],char auth[],char coll[])
{
      bib_p p;
      bib_p temp;
      bib_p temp_pre;
      
      p=(bib_p)malloc(sizeof(bib));
      strcpy(p->title,title);
      strcpy(p->author,auth);
      strcpy(p->coll,coll);
      
      p->next=NULL;
      
      if(head==NULL)
      return p;
      
      else
      {
          if(strcmp(title,head->title)<0)
          {
          p->next=head;
          return p;
          }
          
          temp=head;
          temp_pre=head;
          
          while(temp!=NULL)
          {
                           if(strcmp(title,temp->title)<0)
                           {
                           insert(temp_pre,temp_pre->next,p);
                           return head;
                           }
                           temp_pre=temp;
                           temp=temp->next;
                           }
                           insert(temp_pre,temp_pre->next,p);
                           return head;
                           }
                           }
                           
int getline(char buffer_line[],int Max_l)
{
    int c,i;
    i=0;
    while((c=getchar())!='\n'&&i<Max_l)
    buffer_line[i++]=c;
    buffer_line[i]='\0';
    return i;
}

15 Risposte

  • Re: Programma che funziona con dev c ma non con netbeans

    Quali sono gli errori che ti vengono segnalati?
  • Re: Programma che funziona con dev c ma non con netbeans

    #include <stdio.h>

    int getline(char buffer_line[],int);

    int getline(char buffer_line[],int Max_l)
  • Re: Programma che funziona con dev c ma non con netbeans

    Ma qual è il messaggio di errore???
  • Re: Programma che funziona con dev c ma non con netbeans

    Allora : per il primo :"in file included from"

    Per il secondo :"conflicting types for 'getline'"

    Per il terzo :""conflicting types for 'getline'
  • Re: Programma che funziona con dev c ma non con netbeans

    ho compilato una lista con dev c++ correttamente
    Con dev-c++ non hai compialto proprio niente! ne tantopiu col netbeans, sono entrambi ide e non compilatori.
    Correttamente è una parola grossa,dato che il codice presenta diversi bug.
    Dovresti quindi dirci che compilatore usi sotto netbeans e fare il cut/past di tutta la segnalazione dell'errore perchè non si capisce molto.
    Compilato con mingw tramite c::b
    ||=== iop, Debug ===|
    D:\C_C++\CodeBlock\iop\main.c||In function 'main':|
    D:\C_C++\CodeBlock\iop\main.c|34|warning: unused variable 'line' [-Wunused-variable]|
    D:\C_C++\CodeBlock\iop\main.c||In function 'Add_to_list':|
    D:\C_C++\CodeBlock\iop\main.c|99|warning: 'curr' may be used uninitialized in this function [-Wuninitialized]|
    D:\C_C++\CodeBlock\iop\main.c||In function 'main':|
    D:\C_C++\CodeBlock\iop\main.c|52|warning: 'cont' is used uninitialized in this function [-Wuninitialized]|
    ||=== Build finished: 0 errors, 3 warnings (0 minutes, 5 seconds) ===|
  • Re: Programma che funziona con dev c ma non con netbeans

    Con Dev C++ compila perfettamente , non so come dimostrartelo , spero credi alle mie parole . Su netbeans mi da i seguenti errori :
    /usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
    make[1]: Entering directory '/cygdrive/c/Users/Cucco/Documents/NetBeansProjects/CppApplication_2'
    "/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin_4.x-Windows/cppapplication_2.exe
    make[2]: Entering directory '/cygdrive/c/Users/Cucco/Documents/NetBeansProjects/CppApplication_2'
    mkdir -p build/Debug/Cygwin_4.x-Windows
    rm -f build/Debug/Cygwin_4.x-Windows/main.o.d
    gcc    -c -g -MMD -MP -MF build/Debug/Cygwin_4.x-Windows/main.o.d -o build/Debug/Cygwin_4.x-Windows/main.o main.c
    main.c:27:12: error: conflicting types for ‘getline’
    In file included from /usr/include/stdio.h:62:0,
                     from main.c:8:
    /usr/include/sys/stdio.h:37:9: note: previous declaration of ‘getline’ was here
    main.c:255:5: error: conflicting types for ‘getline’
    In file included from /usr/include/stdio.h:62:0,
                     from main.c:8:
    /usr/include/sys/stdio.h:37:9: note: previous declaration of ‘getline’ was here
    nbproject/Makefile-Debug.mk:66: recipe for target 'build/Debug/Cygwin_4.x-Windows/main.o' failed
    make[2]: *** [build/Debug/Cygwin_4.x-Windows/main.o] Error 1
    make[2]: Leaving directory '/cygdrive/c/Users/Cucco/Documents/NetBeansProjects/CppApplication_2'
    nbproject/Makefile-Debug.mk:59: recipe for target '.build-conf' failed
    make[1]: *** [.build-conf] Error 2
    make[1]: Leaving directory '/cygdrive/c/Users/Cucco/Documents/NetBeansProjects/CppApplication_2'
    nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
    make: *** [.build-impl] Error 2
    
    
    BUILD FAILED (exit value 2, total time: 6s)
  • Re: Programma che funziona con dev c ma non con netbeans

    Con dev ripeto che non compili perchè è un ide e a quantopare non ne conosci le differenze!
    Con netbeans compili con cyg sai cos'è e a cosa serve? l'hai scelto a caso o hai delle motivazioni particolari?
  • Re: Programma che funziona con dev c ma non con netbeans

    Prova a cambiare nome alla "tua" funzione getline()
  • Re: Programma che funziona con dev c ma non con netbeans

    Dimenticavo,se non hai esigenze particolari,ma vuoi rimanere con lo stesso compilatore che usa dev-c++ ovvero MinGW puoi scaricarti Code::Blocks completamente open source e molto aggiornato, è possibile scaricare anche il pacchetto comprendente il compilatore mingw oppure potresti adottare la scelta di usare digital mars come compilatore.
  • Re: Programma che funziona con dev c ma non con netbeans

    L ho chiamata get e adessol'errore sembra essere scomparso , solo che mi rimanse sempre quello su include <std.io>
  • Re: Programma che funziona con dev c ma non con netbeans

    Se ti da degli errori sugli header standard vuol dire che non hai configurato correttamente le path del compilatore.
  • Re: Programma che funziona con dev c ma non con netbeans

    Posta l'errore altrimenti non ti posso aiutare
  • Re: Programma che funziona con dev c ma non con netbeans

    Getline è una funzione di libreria, utiilzza getlinea

    Per l'altro errore a cosa ti riferisci?

    <std.io>

    non sarà

    <stdio.h>

    oppure

    <cstdio>
  • Re: Programma che funziona con dev c ma non con netbeans

    Effettivamente cambiando getline con get ho risolto .
    Ma come mai me lo sapete dire??
Devi accedere o registrarti per scrivere nel forum
15 risposte