Prof. Stefano Guerrini
Canale P-Z
5 aprile 2002
Gli esercizi dovranno essere inviati entro le 24 di lunedì 08/04/02. |
Si scrivano le seguenti funzioni
int contaparole(char *, struct contap*); int contachar(char *, int[256]);tali che
contaparole
conta le linee, le parole ed i caratteri
nel file il cui nome è ricevuto come primo argomento. Il risultato
del conteggio è ritornato nella struttura
struct contap { int nl, /* numero linee */ nw, /* numero parole */ nc; /* numero caratteri */ };passata per riferimento come secondo parametro della funzione.
' '
, '\n'
o '\t'
,
racchiusa tra una coppia di spazi bianchi, o tra uno spazio bianco
ed il fine file.
contachar
conta le occorrenze di ciascun carattere
ch
il cui nome è ricevuto come primo argomento. Il numero
di caratteri ch
nel file è ritornato nella posizione
ch
del vettore ricevuto come secondo argomento.
Il file es3.h
(vedi
anche appendice A) contiene i prototipi delle
suddette funzioni e la definizione di struct contap
.
Le due funzioni dovranno essere implementate in un modulo es3.c
che verrà poi verificato per mezzo del main in
provaes3.c
(vedi
anche appendice B).
Il modulo es3.c
inviato dagli studenti verrà compilato
insieme a provaes3.c
col comando
gcc provaes3.c es3.c -o provaes3
Si devono scrivere le funzioni
int copiafile(char *, char *); int compfile(char *, char *); int concatfile(char *, char *, char *);tali che
copiafile
copia il contenuto del file il cui nome è
ricevuto come primo argomento nel file il cui nome è ricevuto
come secondo argomento.
compfile
compara il contenuto dei file i cui nomi sono
ricevuti come primo e secondo argomento.
concatfile
concatena il contenuto dei file i cui nomi
sono ricevuti come primo e secondo argomento creando un nuovo file
il cui nome è ricevuto come terzo argomento.
copiafile
che la concatfile
riscrivono
sopra copie eventualmente presenti dei file risultato.
Il file es4.h (vedi anche appendice C) contiene i prototipi delle suddette funzioni.
Le funzioni dovranno essere implementate in un modulo es4.c
che
verrà poi verificato per mezzo del main in
provaes4.c
(vedi
anche appendice D).
gcc provaes4.c es4.c -o provaes4
/* -*- Mode: C -*- */ /* Time-stamp: <es3.h 02/04/05 02:02:54 guerrini@sgport.dsi.uniroma1.it> */ struct contap { int nl, /* numero linee */ nw, /* numero parole */ nc; /* numero caratteri */ }; int contaparole(char *, struct contap *); /* conta le linee, le parole ed i caratteri in un file: * il primo argomento e' il nome del file * il secondo argomento e' il puntatore alla struttura in cui * memorizzare il risultato * ritorna -1 se tutto ok, o 0 se ci sono errori */ int contachar(char *, int[256]); /* conta le occorrenze di ogni carattere in un file: * il primo argomento e' il nome del file * il secondo argomento e' un vettore puntatore in cui * memorizzare il risultato; per ogni carattere ch, la posizione ch * di tale vettore contiene le occorrenze di ch nel file * ritorna -1 se tutto ok, o 0 se ci sono errori */
/* -*- Mode: C -*- */ /* Time-stamp: <provaes3.c 02/04/05 02:08:26 guerrini@sgport.dsi.uniroma1.it> */ int main(void) { /************************************************************* Verra' fornito entro lunedi' mattina *************************************************************/ }
/* -*- Mode: C -*- */ /* Time-stamp: <es4.h 02/04/05 01:54:03 guerrini@sgport.dsi.uniroma1.it> */ int copiafile(char *, char *); /* copia un file: * il primo argomento e' il nome del file da copiare * il secondo argomento e' il nome del nuovo file * ritorna -1 se tutto ok, o 0 se ci sono errori */ int compfile(char *, char *); /* compara due file i cui nomi sono ricevuti come argomenti * ritorna -1 se tutto ok, o 0 se ci sono errori */ int concatfile(char *, char *, char *); /* concatena due file: * il primo e secondo argomento sono i nomi dei file da copiare * il terzo argomento e' il nome del nuovo file * ritorna -1 se tutto ok, o 0 se ci sono errori */
/* -*- Mode: C -*- */ /* Time-stamp: <provaes4.c 02/04/05 02:08:37 guerrini@sgport.dsi.uniroma1.it> */ int main(void) { /************************************************************* Verra' fornito entro lunedi' mattina *************************************************************/ }