#include <stdio.h>
int appartiene(char* buffer, char *vet[], int n)
{ /* Funzione ausiliaria: verifica l'appartenenza di una
parola al vettore di parole */
#include <stdio.h>
int Arrotonda(float x)
{ return x + 0.5; } /* conversione automatica da float a int */
void ArrotondaFile(char* nomefile)
{
float x;
FILE* fp;
int* v; /* Vettore di interi per memorizzare
la sequenza già arrotondata */
int i = 0, /* indice del vettore */
n = 0; /* numero di elementi nel file */
fp = fopen(nomefile,"r");
while (fscanf(fp,"%*f") != EOF)
n++;
v = (int*) malloc(n* sizeof(int));
rewind(fp);
for (i = 0; i < n; i++)
{
fscanf(fp,"%f",&x);
v[i] = Arrotonda(x);
}
Soluzioni degli esercizi sui file
fclose(fp);
fp = fopen(nomefile,"w");
for (i = 0; i < n; i++)
fprintf(fp,"%d ",v[i]);
fclose(fp);
}
main()
{ /* Programma principale */
ArrotondaFile("reali.dat");
}
Arrotondamento con i file
Il programma seguente permette di:
Dato un file che contiene una sequenza di valori reali separati da uno spazio.
Come questo esempio:
4.522 5.32 4 5.001 16.2 34.2 45.6
Il programma in C prende come parametro il nome del file e sostituisce completamente il contenuto del file stesso con i valori interi ottenuti per arrotondamento al valore più vicino: ad esempio, abbiamo un numero 3,4, arrotonderà per difetto; se supera il 5, arrotonderà per eccesso.
Ad esempio, dopo l’esecuzione della funzione, il contenuto del file dell’esempio deve essere
5 5 4 5 16 34 46.