Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348

    [C] piu' file.c e unico eseguibile

    Ciao ho un piccolo problema nella compilazione di piu file c per creare un unico eseguibile!

    Allora la fase di compilazione penso e spero di non sbagliare che sia giusta!

    ho un file A.c con la funzione stampa() che deve essere utilizzata dal file run.c allora ho creato un file A.h e scritto
    stampa() , nel file run.c ho creato include "A.h"

    gcc -g -o run A.c run.c

    non mi da nessun errore di compilazione!
    pero' quando faccio partire run non fa quello che deve fare!
    stampa e' una funzione che crea/apre un file e ci scrive qualcosa!avevo a creato un main in A.c e non c'erano problemi fungeva tutto apriva e scriveva!

    Vi serve il codice?o sbaglio qualche fase della compilazione?i due file si trovono nella stessa dir!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Serve il codice, il sistema operativo, il compilatore ....

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    OS linux compilatore gcc codice:

    separazione.c
    #include <stdio.h>




    #define LISTA_ISCC 'I'
    #define LISTA_ISCE 'E'
    #define INFO_PIANO 'P'
    #define LUNGH_RIGA 200


    int separazione(void){

    FILE * fp , * pfDati;
    char scelta;
    char p1[100] , p2[160] , p3[100], p4[100];
    char testo[LUNGH_RIGA];
    fp = fopen("./ricevuti.sms", "r");
    if (fp == NULL)
    /*se il file dei messaggi non c'e' ritorna -1*/
    return -1;

    while(fgets(testo , LUNGH_RIGA , fp )){
    sscanf(testo, "%s%s%s%s", p1 , p2 , p3 , p4);
    scelta = p2[0];
    switch(scelta){
    case LISTA_ISCC:
    pfDati = fopen( "./file/listacorso.xml" , "a+");
    fprintf(stderr , "prova sono qua!!");
    fprintf(stderr , "%s", p1);

    if(pfDati == NULL)
    fprintf(stderr , "non si e' aperto il file!!");
    fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<lista>%s</lista>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1 , p2 , p3 , p4 );
    break;
    case LISTA_ISCE:
    pfDati = fopen( "./file/listesame.xml" , "a+");
    fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<esame>%s</esame>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1 , p2 , p3 , p4 );
    break;
    case INFO_PIANO:
    pfDati = fopen( "./file/infopiano.xml" , "a+");
    fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<piano>%s</piano>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1 , p2 , p3 , p4 );
    break;
    default:
    pfDati = fopen( "./file/smsnnvalidi.xml" , "a+");
    fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<piano>%s</piano>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1 , p2 , p3 , p4 );
    break;
    }
    }
    return 0;
    }

    separazione.h

    int separazione(void);


    ricezione.c
    #include "separazione.h"


    int main(void){

    separazione();
    sleep(60);


    return 0;
    }

    allora quando chiamo la funzione separazione crea un file pero' non inserisce niente dentro!
    se invece creo un main locale nel file separazione.c le cose sono ok crea il file e stampa!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Metti il codice tra i tag del codice che questo forum prevede ed indenta correttamente i blocchi ... altrimenti si fa fatica a leggere il listato e si rinuncia a darti delle spiegazioni ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    ma avevo identetato ma cose si usa code??e' # giusto??ho provato ad usare # ma quando faccio anteprima perdo l'identazione!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' semplice ...

    Inserisci

    [ CODE ]

    senza spazi all'inizio del codice e

    [ /CODE ]

    senza spazi alla fine

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    separazione.c
    codice:
    #include <stdio.h>
    
    
    
    
    #define LISTA_ISCC 'I'
    #define LISTA_ISCE 'E'
    #define INFO_PIANO 'P'
    #define LUNGH_RIGA 200
    
    
    int separazione(void){
    
                    FILE * fp , * pfDati;
                    char scelta;
                    char p1[100] , p2[160] , p3[100], p4[100];
                    char testo[LUNGH_RIGA];
                    fp = fopen("./ricevuti.sms", "r");
                    if (fp == NULL)
                        /*se il file dei messaggi non c'e' ritorna -1*/
                        return -1;
    
                    while(fgets(testo , LUNGH_RIGA  , fp )){
                            sscanf(testo, "%s%s%s%s", p1 , p2 , p3 , p4);
                            scelta = p2[0];
                             switch(scelta){
                                 case LISTA_ISCC:
                                         pfDati = fopen( "./file/listacorso.xml"  , "a+");
                                         fprintf(stderr  , "prova sono qua!!");
                                          fprintf(stderr  , "%s", p1);
    
                                         if(pfDati == NULL)
                                             fprintf(stderr  , "non si e' aperto il file!!");
                                         fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<lista>%s</lista>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1  , p2 , p3  , p4 );
                                 break;
                                 case LISTA_ISCE:
                                    pfDati = fopen( "./file/listesame.xml"  , "a+");
                                    fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<esame>%s</esame>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1  , p2 , p3  , p4 );
                                 break;
                                 case INFO_PIANO:
                                    pfDati = fopen( "./file/infopiano.xml"  , "a+");
                                    fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<piano>%s</piano>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1  , p2 , p3  , p4 );
                                 break;
                                 default:
                                     pfDati = fopen( "./file/smsnnvalidi.xml"  , "a+");
                                     fprintf(pfDati , "<sms>\n<numero>%s</numero>\n<piano>%s</piano>\n<matricola>%s</matricola>\n<codice>%s</codice>\n </sms>\n" , p1  , p2 , p3  , p4 );
                                break;
                             }
                    }
            return 0;  
    }
    separazione.h

    int separazione(void);

    rice.c
    codice:
    #include "separazione.h"
    int main(void){
    
    while(1)
        {
            
        
            separazione();
            sleep(60);
           
       }
        return 0;
    }

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Vedo che nel ciclo della funzione separazione apri continuamente dei file ... ma quando li chiudi?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    uh c... e' vero!!!!adesso provo a sistemarlo!ma dici che si quello?perche' creando un main nel separazione.c andava tutto ok ??

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non lo so ... ma i file che si aprono si devono chiudere ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.