Upload files to "file"
This commit is contained in:
parent
82a76eac07
commit
8859e81c7a
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
AUTORE: Manuel Vichi 3^AIN
|
||||
Esercizio 3 File Binari
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
using namespace std;
|
||||
typedef struct {
|
||||
char nome[20];
|
||||
char cognome[20];
|
||||
float reddito;
|
||||
} Persona;
|
||||
Persona leggiPersona(const char * fileName) {
|
||||
Persona persona;
|
||||
FILE* file = fopen(fileName, "rb");
|
||||
if (file != NULL) {
|
||||
Persona persona;
|
||||
fread(&persona, sizeof(persona), 1, file);
|
||||
fclose(file);
|
||||
} else {
|
||||
perror("Errore durante l'apertura del file di lettura");
|
||||
return persona;
|
||||
}
|
||||
return persona;
|
||||
}
|
||||
int leggiPersone(const char * fileName, Persona persone[], const size_t count) {
|
||||
FILE * file = fopen(fileName, "rb");
|
||||
if (file != NULL) {
|
||||
int read = fread(persone, sizeof(Persona), count, file);
|
||||
return read;
|
||||
} else {
|
||||
perror("Errore durante l'apertura del file di lettura");
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
int scriviPersona(const char * fileName, const Persona persona) {
|
||||
FILE * file = fopen(fileName, "wb");
|
||||
if (file != NULL) {
|
||||
int written = fwrite(&persona, sizeof(persona), 1, file);
|
||||
fclose(file);
|
||||
return written;
|
||||
} else {
|
||||
perror("Errore durante l'apertura del file di scrittura");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
Persona memorizzaPersona(const char nome[], const char cognome[], const float reddito) {
|
||||
Persona persona;
|
||||
strcpy(persona.nome, nome);
|
||||
strcpy(persona.cognome, cognome);
|
||||
persona.reddito = reddito;
|
||||
return persona;
|
||||
}
|
||||
int convertiText(const char * binaryName, const char * textName, const size_t count) {
|
||||
FILE* read = fopen(binaryName, "rb");
|
||||
FILE* write = fopen(textName, "wt");
|
||||
if (read == NULL || write == NULL) {
|
||||
perror("Errore durante l'apertura di uno dei file");
|
||||
return -1;
|
||||
} else {
|
||||
Persona buffer[count];
|
||||
int written = 0;
|
||||
fread(buffer,sizeof(Persona),count,read);
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
written += fprintf(write,"%s %s %f", buffer[i].nome, buffer[i].cognome, buffer[i].reddito);
|
||||
}
|
||||
return written;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
int main(void) {
|
||||
Persona persona;
|
||||
char file[] = "persona.bin";
|
||||
char file2[] = "persona2.bin";
|
||||
printf("Dimensione del tipo Persona: %d\n", sizeof(persona));
|
||||
persona = memorizzaPersona("Mario", "Rossi", 1350.50);
|
||||
printf("Valori scritti su file binario %s: %d\n", file, scriviPersona("persona.bin", persona));
|
||||
persona = leggiPersona(file);
|
||||
printf("Valori letti dal file binario %s: %s, %s, %f\n", file, persona.nome, persona.cognome, persona.reddito);
|
||||
Persona persone[5];
|
||||
printf("Numero di valori letti dal file binario %s: %d\n", file2, leggiPersone(file2, persone, 5));
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue