[Tech] la funzione fopen del C

Claudio Kutufà claudiok@nexusfi.it
Lun 21 Giu 2004 17:45:52 CEST


Invece di debuggare il codice se vuoi ti mando alcune righe di un programma 
che fanno una cosa analoga.... dimmi tu, altrimenti vediamo di sistemare il tuo

ciao
Cla

At 17.46 21/06/04 +0200, you wrote:
>Ciao a tutti.
>
>vorrei far leggere un file di testo a un programma in modo che venga 
>riconosciuta e estratta una stringa di caratteri.
>In particolare il programma deve controllore se nel file di testo c'è il 
>nome di un server.
>
>File di testo:
>
>[localhost.localdomain]
><serie di opzioni>
>
>
>EOF
>
>il codice c deve leggere il file di testo, riconoscere che all'interno 
>delle parentesi [  ] c'è qualcosa e trascrivere quel qualcosa in una stringa:
>
>#include <stdio.h>
>#include <unistd.h>
>#include <stdlib.h>
>
>main() {
>   char name[30]={ };
>   char host[30]={ };
>   char nome[30]={ };
>   FILE *fd;
>   char ch;
>   char dati[1];
>   int op;
>
>   // identificazione stazione
>   if (gethostname(name,sizeof(name))==-1)
>     {
>     printf("Viola Alè, un centra niente ma va sempre bene");
>     }
>
>   // crea il nome per il confronto
>   strcpy(nome,"["); // aggiunge [ all'inizio di name
>   strcat(nome,name);
>
>   // Apre il file di configurazione
>   if (!(fd=fopen("DBServer","r"))) {
>    perror("Errore");
>   }
>
>   // da qui iniziano le grane.
>   op=2;
>   while ((ch=fgetc(fd)) != EOF)
>     {
>       memset(dati,ch,sizeof(dati));
>       if (strcmp(dati, "[") == 0) { // se si verifica devi iniziare a 
> copiare il carattere letto nella stringa host
>         op=1;
>       } else if (strcmp(dati,"]") == 0) { // se si verifica smetti di 
> copiare il caratte in host
>         op=2;
>       }
>       if (op==1) { // QUESTA PARTE NON FUNZIONA MAI PERCHE' NON RICONOSCE 
> LA [
>         strcat(host,dati);
>       }
>   }
>   printf("%s\n",host);
>   fclose(fd);
>}
>
>Dove sbaglio???
>
>Grazie, Vale
>--
>Valerio Montagnani        (Lug-Account)        <tech@vmontagnani.it>
>               pub 1024/C7E4BC57    sub 2048g/0E170155
>Key fingerprint = D5A4 EDFC 060C 5BD6 E2DD  8252 3B67 C1EB C7E4 BC57
>_______________________________________________
>FLUG - Discussioni tecniche - tech@firenze.linux.it
>URL: http://lists.firenze.linux.it/mailman/listinfo/tech
>Archivio: http://lists.firenze.linux.it/pipermail/tech
>Ricerca nell'archivio: http://www.firenze.linux.it/search


_____________________________________________________________

Ing. Claudio Kutufa'
NEXUS SISTEMI INFORMATIVI S.P.A.
e-mail personale: claudiok@nexusfi.it
tel. cellulare: 335 5859567
Sede Oper.va : Via Dante da Castiglione, 33
Tel. : +39 055 229413 Fax : +39 055 229785
50125 Firenze - Italy
Sede Amm.va : Via Panciatichi 40/11
Tel. : +39 055 4222030 Fax : +39 055 4376670
50100 Firenze - Italy
Nexus home page: www.nexusfi.it
_____________________________________________________________




Maggiori informazioni sulla lista flug-tech