[Tech] la funzione fopen del C

Valerio Montagnani tech@vmontagnani.it
Lun 21 Giu 2004 17:46:59 CEST


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



Maggiori informazioni sulla lista flug-tech