Upload files to "file"

This commit is contained in:
Vichingo455 2025-05-07 15:01:31 +00:00
parent 59eb5b9095
commit 82a76eac07
1 changed files with 64 additions and 4 deletions

View File

@ -4,14 +4,65 @@ Esercizio 2 File Binari
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h>
#include <time.h>
using namespace std; using namespace std;
void initializeArray(int array[], size_t size) {
//size_t size = sizeof(array) / sizeof(array[0]);
for (size_t i = 0; i < size; i++) {
array[i] = 0;
}
}
int readBinary(char * const fileName, int buffer[], size_t count) { int readBinary(char * const fileName, int buffer[], size_t count) {
FILE* file = fopen(fileName, "rb"); FILE* file = fopen(fileName, "rb");
if (file == NULL) { if (file == NULL) {
perror("Errore nell'apertura del file di lettura"); perror("Errore nell'apertura del file di lettura");
return -1; return -1;
} else { } else {
int read = fread(&buffer,sizeof(int),count,file); fseek(file,0,SEEK_SET);
int read = fread(buffer,sizeof(int),count,file);
fclose(file);
return read;
}
return -1;
}
int readSpecific(char * const fileName, int &buffer, unsigned index) {
FILE* file = fopen(fileName, "rb");
if (file == NULL) {
perror("Errore nell'apertura del file di lettura");
return -1;
} else {
unsigned n = (index-1);
fseek(file,n * sizeof(int),SEEK_SET);
int read = fread(&buffer,sizeof(int),1,file);
fclose(file);
return read;
}
return -1;
}
int readBeforeLast(char * const fileName, int &buffer) {
FILE* file = fopen(fileName, "rb");
if (file == NULL) {
perror("Errore nell'apertura del file di lettura");
return -1;
} else {
fseek(file,-sizeof(int),SEEK_END);
int read = fread(&buffer,sizeof(int),1,file);
fclose(file);
return read;
}
return -1;
}
int readRandom(char * const fileName, int &buffer, unsigned count_max) {
FILE* file = fopen(fileName, "rb");
if (file == NULL) {
perror("Errore nell'apertura del file di lettura");
return -1;
} else {
srand(time(NULL));
unsigned n = rand() % (count_max + 1);
fseek(file,n * sizeof(int),SEEK_SET);
int read = fread(&buffer,sizeof(int),1,file);
fclose(file); fclose(file);
return read; return read;
} }
@ -19,13 +70,22 @@ int readBinary(char * const fileName, int buffer[], size_t count) {
} }
int main(void) { int main(void) {
char file[] = "file_200.bin"; char file[] = "file_200.bin";
int arr[100]; //char file[] = "file.txt";
int arr[200];
int num = 0,numlast = 0,random = 0;
size_t count = sizeof(arr) / sizeof(arr[0]); size_t count = sizeof(arr) / sizeof(arr[0]);
initializeArray(arr,count);
printf("Valori letti dal file %s: %d\n",file,readBinary(file,arr,count)); printf("Valori letti dal file %s: %d\n",file,readBinary(file,arr,count));
printf("Valori letti: "); printf("Valori letti dal file %s: %d\n",file,readSpecific(file,num,2));
printf("Valori letti dal file %s: %d\n",file,readBeforeLast(file,numlast));
printf("Valori letti dal file %s: %d\n",file,readRandom(file,random,count));
printf("Lettura completa: ");
for (size_t i = 0; i < count; i++) { for (size_t i = 0; i < count; i++) {
printf("%d ", arr[i]); printf("%d ", arr[i]);
} }
printf("\n"); printf("\n");
printf("Risultato lettura specifica: %d\n",num);
printf("Risultato lettura penultimo elemento: %d\n",numlast);
printf("Risultato lettura casuale: %d\n",random);
return 0; return 0;
} }