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 |
#!/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