[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