next up previous contents index
Next: Definizione ed uso delle Up: Le caratteristiche standard del Previous: Operatori sui puntatori   Indice   Indice analitico


Input e Output su file

Per salvare i dati prodotti da un programma, è utile salvarli in maniera permanente su disco, quindi, scriverli su file. Analogamente, si può dover accedere a informazioni memorizzate su file. Per fare questo tipo di operazioni, bisogna dichiarare, all'interno del programma, un puntatore a file, nella maniera che segue:

 FILE *miofile;
Per essere utilizzato, un file deve essere aperto; per fare ciò, si utilizza la funzione
 FILE *fopen(const char *nome_file, const char *modalità);
Dove la modalità può' essere:
r testo,lettura
w testo, scrittura
a testo, mod. "append"
rb lettura, mod. binaria
wb scrittura, mod. binaria
ab "append", mod. binaria
r+ lettura e scrittura in mod. binaria
w+ lettura e scrittura in mod. binaria
r+b o rb+ lettura e scrittura in mod. binaria
w+b o wb+ lettura e scrittura in mod. binaria
a+b o ab+ lettura e scrittura in mod. binaria
Un esempio utile Nell'esempio che segue, si vuole aprire in lettura un file contenente un semplice file di testo, ad esempio un file di configurazione (nell'esempio .bashrc) e scrivere in output, su di un opportuno file, lo stesso testo, includendolo in una pagina HTML; si abbia, ad esempio, il testo seguente:
#!/bin/bash
echo '			Tempus Fugit...'
cal
alias l='ls --color -l|more'
alias la='ls --color -a'
alias ls='ls --color'
alias vi='vimx'


export PS1="\[\033[6;35m\]\u@\h\[\033[36m\]
\w\[\033[1;37m\]>\[\033[0;31m\]\$\[\033[0m\] "

e si voglia ottenere, a partire da questo, la pagina HTML seguente:

<html><head><title>File di configurazione</title></head>
<body bgcolor=red><hr>

<pre>
#!/bin/bash
echo '			Tempus Fugit...'
cal
alias l='ls --color -l|more'
alias la='ls --color -a'
alias ls='ls --color'
alias vi='vimx'


export PS1="\[\033[6;35m\]\u@\h\[\033[36m\]
\w\[\033[1;37m\]>\[\033[0;31m\]\$\[\033[0m\] "
</pre>

<hr></body></html>

E' presto detto:

     1	#include <stdio.h>
     2
     3	int app;
     4	char htmlstart[]="<html><head><title>File di
 configurazione</title></head>
     <body bgcolor=red><hr><pre>";
     5	char htmlfinish[]="</pre><hr></body></html>";
     6	int col, acapo;
     7	FILE *f_in, *f_out;
     8
     9	int main( char argc, char *argv[])
    10	{
    11	  if (argc !=3)  {
    12	    printf ("\n\t Converte files di testo in formato HTML\n\n");
    13	    printf("\t utilizzo:\n\t 2html <origine.c> <dest.html>\n");
    14	    exit();
    15	  }
    16
    17	  if (  ( f_in = fopen ( argv[1] , "r" ) ) &&
    18		( f_out = fopen ( argv[2] , "w" ) )
    19		)  {
    20	    fputs( htmlstart, f_out);
    21
    22	    while (( app = getc( f_in )) != EOF )   {
    23
    24	      fputc ( app , f_out );
    25
    26	    } 	/*    fine while  */
    27
    28	  }
    29	  fputs( htmlfinish, f_out);
    30
    31	  fclose( f_in );
    32	  fclose( f_out );
    33
    34	}
    44


next up previous contents index
Next: Definizione ed uso delle Up: Le caratteristiche standard del Previous: Operatori sui puntatori   Indice   Indice analitico
blacksheep & 2006-11-22