effettuare la scansione di un text file in C
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
effettuare la scansione di un text file in C
Ciao a tutti, mho un problema serio riguardo la programmazione in linguaggio C.
Devo effettuare la scansione di un file di testo, ad esempio un file del tipo:
#Begin configuration file
OPTION1=...
OPTION2=...
#End configuration file
Devo leggere i valori delle variabili OPTION, ma devo effettuare tutto questo in linguaggio C.
Qualcuno sa darmi qualche dritta? Le provate tutte..., uso l'interfaccia standard ANSI C degli stream, ma non riesco a leggere neppure un rigo.
Grazie, e ciao
Devo effettuare la scansione di un file di testo, ad esempio un file del tipo:
#Begin configuration file
OPTION1=...
OPTION2=...
#End configuration file
Devo leggere i valori delle variabili OPTION, ma devo effettuare tutto questo in linguaggio C.
Qualcuno sa darmi qualche dritta? Le provate tutte..., uso l'interfaccia standard ANSI C degli stream, ma non riesco a leggere neppure un rigo.
Grazie, e ciao
- Blizzard
- Master

- Messaggi: 1509
- Iscritto il: mar 2 gen 2007, 22:53
- Nome Cognome: Giovanni Santostefano
- Slackware: 12.2
- Kernel: 2.6.27.7-smp
- Desktop: Fluxbox
- Contatta:
Re: effettuare la scansione di un text file in C
ciao,
perchè non posti il codice che hai scritto e vediamo di capire il perchè non funziona???
se poi vuoi qualcosa di gia pronto in tavola puoi dare un'occhiata al lettore di config file che ho fatto per una mezza shell che ho sviluppato
http://digilander.libero.it/bohshell/
li uso parecchio POSIX... ma quella parte dovrebbe essere facilmente convertita in ANSI
Gio
perchè non posti il codice che hai scritto e vediamo di capire il perchè non funziona???
se poi vuoi qualcosa di gia pronto in tavola puoi dare un'occhiata al lettore di config file che ho fatto per una mezza shell che ho sviluppato
http://digilander.libero.it/bohshell/
li uso parecchio POSIX... ma quella parte dovrebbe essere facilmente convertita in ANSI
Gio
- Blizzard
- Master

- Messaggi: 1509
- Iscritto il: mar 2 gen 2007, 22:53
- Nome Cognome: Giovanni Santostefano
- Slackware: 12.2
- Kernel: 2.6.27.7-smp
- Desktop: Fluxbox
- Contatta:
Re: effettuare la scansione di un text file in C
http://bohsh.cvs.sourceforge.net/viewvc ... iew=markup
di preciso è la prima funzione di questo file
di preciso è la prima funzione di questo file
Re: effettuare la scansione di un text file in C
Il mio prototipo per ora è il seguente:
bash-3.1# gcc programd.c -o programd
bash-3.1# ./programd
Command syntax:
programd [ start | stop ]
start: start daemon
stop: stop daemon
bash-3.1# ./programd start
-1
Segmentation fault
bash-3.1#
mentre il file di configurazione è il seguente:
Compilazione ed esecuzione vanno nel modo seguente:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[]) {
int fd, d;
size_t lsize;
FILE* conf_file;
char * line = NULL;
if (argc == 1) {
printf("\nCommand syntax:\n");
printf("\n\tprogramd [ start | stop ]\n");
printf("\t\tstart: start daemon\n");
printf("\t\tstop: stop daemon\n");
}
else if (strcmp(argv[1], "start") == 0) {
conf_file = fopen("/etc/program/program.conf", "r");
if (conf_file == NULL) perror("File not open");
while (!feof(conf_file)) {
d = getline(line, lsize, "/etc/program/program.conf");
printf("%d\n", d);
printf("%s\n", line);
}
}
return(0);
}
bash-3.1# gcc programd.c -o programd
bash-3.1# ./programd
Command syntax:
programd [ start | stop ]
start: start daemon
stop: stop daemon
bash-3.1# ./programd start
-1
Segmentation fault
bash-3.1#
mentre il file di configurazione è il seguente:
# Begin configuration file
OPT=/etc/myprogram/myprogram.log
OPT=/etc/myprogram/myprogram.lock
# End configuration file
- Blizzard
- Master

- Messaggi: 1509
- Iscritto il: mar 2 gen 2007, 22:53
- Nome Cognome: Giovanni Santostefano
- Slackware: 12.2
- Kernel: 2.6.27.7-smp
- Desktop: Fluxbox
- Contatta:
Re: effettuare la scansione di un text file in C
scusa ma hai fatto un po un casino
man getline per vedere dove avevi incasinato nel chiamare la funzione... a partire dai puntatori sino allo stream del file
Gio
edit: ho cambiato il path del file per provarlo... rimetti il tuo
Ariedit:
1. CHIUDI I FILEEEEES!!!!!
2. un puntatore lo hai dichiarato type * var; un'altro type* var;
il modo generalmente migliore è type *var;
3. occhio a quando faccio la free e assegnamento NULL di line. È abbastanza importante
Codice: Seleziona tutto
conf_file = fopen("program.conf", "r");
if (conf_file == NULL) perror("File not open");
while (d = getline(&line, &lsize, conf_file)!=-1) {
printf("%d\n", d);
printf("%s", line);
free(line);
line=NULL;
}
fclose(conf_file);
Gio
edit: ho cambiato il path del file per provarlo... rimetti il tuo
Ariedit:
1. CHIUDI I FILEEEEES!!!!!
2. un puntatore lo hai dichiarato type * var; un'altro type* var;
il modo generalmente migliore è type *var;
3. occhio a quando faccio la free e assegnamento NULL di line. È abbastanza importante
- targzeta
- Iper Master

- Messaggi: 6643
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: effettuare la scansione di un text file in C
Dal getline(3), il prototipo della funzione è:dark0s ha scritto:...d = getline(line, lsize, "/etc/program/program.conf");...
Codice: Seleziona tutto
ssize_t getline(char **lineptr, size_t *n, FILE *stream);Codice: Seleziona tutto
-Wall -pedanticSpina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
