Newsgroup: it.comp.lang.c
Titolo: Aiuto: Compilazione gcc

Salve a tutti ragazzi, sono uno studente di tecnologie informatiche ed
entro giorno 14 aprile devo consegnare via internet un progetto in c
scritto su più file. Io ho organizzato il lavoro in questo modo: in un
file prototipi.h ho incluso stdio.h e ho inserito tutti i prototipi
delle funzioni. Poi in un file funzioni.c ho incluso il file dei
prototipi e ho dichiarato tutte le funzioni. Infine nel file main.c ho
incluso il file dei prototipi e la funzione main. Io lavoro su
WindowsXp e ci fanno utilizzare Dev-C++ per scrivere i programmi.
Quando vado a compilare però un programma su più file Dev-C++ mi da
errore del linker non riuscendo ad agganciare il main con le funzioni.
La mia prof dice che devo per forza installare LINUX e compilare con
gcc ma ho visto che all'interno delle cartelle di Dev-C++ è presente
una versione di gcc e che dal menu Strumenti di Dev si possono
inserire dei comandi per il compilatore e per il linker.
Quello che volevo chiedervi ora è: devo per forza installare LINUX
(quando il progetto verrà corretto verrà lanciato su LINUX) o posso
trovare una scappatoia con Dev-C++. Grazie, spero in una vostra
risposta, a presto.

La domanda è: tu alla prof cosa devi consegnare:
a) sorgenti
b) sorgenti + eseguibile Linux
c) sorgenti + eseguibile Windows
Se a o c allora non ti serve Linux, se b allora ti serve.
Inoltre (a parziale eccezione), se l'esercizio era sui socket, allora forse
lo stesso anche in caso di "a" ti serve lo stesso b.
--- bye

...

Ciao Massimiliano io devo consegnare solo i sorgenti .h e .c con i
diversi file .c che includono l'unico file .h del progetto. Per
correggere useranno un loro main quindi credo che debbano ricompilare
e rilinkare il progetto. In questo caso non importa se i file sono
scritti su windows, l'importante è che funzionino, giusto? :-) In
questo caso faccio così: scrivo il progetto tutto su un file da
windows perchè se no il linker non mi fa compilare e poi copio le
parti di codice su diversi file e lo spedisco. Che ne dici?
Funzionerà? Io penso di sì ma non vorrei fare stupidaggini perchè ne
va dei punti dell'esame di laboratorio. Grazie, fammi sapere, ciao.

 parti di codice su diversi file e lo spedisco. Che ne dici?
Il linker non ti fa compilare perchč hai sbagliato qualcosa. Cosa hai
combinato? Hai creato un nuovo progetto in dev-c++ e aggiunto i vari files
.cpp?
--- bye

Ciao Massimiliano, allora, ho fatto dei progressi.
Ho creato un progetto C da Dev e ho aggiunto i file.
Nei file c ho incluso i file h (nel senso di #include) e ora compila
tranquillamente su più file. Crea anche i giusti file .o
Ora quindi mando i file separati, ma quando la prof li compilerà con
Linux funzioneranno? Posso stare tranquillo o è sempre meglio
installare Linux per essere sicuro al 100%? Grazie, ciao.

 Linux funzioneranno? 
Se hai scritto il tutto nello stile più standard ansi che ci sia
(librerie ecc ...)la risposta e decisamente si! :)
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

(librerie ecc ...)la risposta e decisamente si! :)
Cmq se sei "paranoico" ti conviene compilarli sotto Linux. Di solito nelle
universitā ci sono laboratori in cui č installato il Linux. Tu sei iscritto
a un'Univ. vero?
Oppure puoi chiedere a qualche tuo amico che ha linux di compilarli per te.
Io non installerei mai un SO per provare un piccolo esercizio (benchč abbia
fatto cose altrettanto inutili (come rapporto prezzo/prestazioni) in passato
:-) )
--- bye

Ciao di nuovo Max, adesso penserai che sto approfittando della tua
cortesia e ti chiedo scusa, però ho un nuovo problema.
Ti scrivo il codice tutto di seguito così magari mi aiuti.
#include<stdio.h>
#include<assert.h>
#define DIMALF 26
FILE* openFile(char*, char*);
char* leggiTesto(FILE*);
main()
{
   char nomeFile[10];
   char modo[3];
   FILE *mess;
   char *chString;
   printf("Inserire il nome del file da caricare: ");
   gets(nomeFile);
   printf("Inserire la modalita' di accesso al file: ");
   gets(modo);
   mess = openFile(nomeFile, modo);
   chString = leggiTesto(mess);
   return 0;
}
FILE* openFile(char *nFile, char *modoAcc)
/*Apre un file e vi associa uno stream
 *postc: restituisce un puntatore al file aperto, se l'apertura
 *       ha avuto successo, interrompe il programma altrimenti*/
{
   FILE *fileName;
 
   fileName = fopen(nFile, modoAcc);
   assert(fileName != NULL);   
   return fileName;
}
char* leggiTesto(FILE *fPtr)
/*Trasforma i messaggi letti da un file di testo in una stringa
 *di soli caratteri minuscoli, sostituendo ogni lettera accentata 
 *con la corrispondente non accentata e ogni carattere non alfabetico
 *con uno spazio
 *postc: restituisce la stringa che contiene il messaggio letto
 *       da file trasformato secondo le regole date*/
{
   char *stringa;
   int c;
   int l = 0;
 
   while(c = fgetc(fPtr) != EOF) {
      *(stringa + l) = c;
      printf("%d", *(stringa + l));
      l++;
   }
   return stringa;
}
Il programma poi continua a lungo ma quello che non riesce a fare è
leggere tutti i caratteri del file nella funzione leggiTesto(). Legge
solo i primi quattro caratteri del file di prova .txt nel quale c'è
scritto Pulcino Blu e inoltre dice che sono tutti 1, se stampo int c
mi risulta sempre 1111, se lo converto in char mi stampa quattro
odiosissimi smile e quando va a leggere il quinto carattere WindowsXp
mi da sempre un ancora più odioso messaggio di errore. Dove sbaglio?
Come capperi si leggono tutti i caratteri di un file fino ad eof
inserendoli uno per uno in una stringa? Ti sarei infinitamente grato
se potessi aiutarmi, non diventerà un'abitudine, lo giuro. Grazie,
ciao.