Upload files to "file"
This commit is contained in:
parent
59eb5b9095
commit
82a76eac07
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue