Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define BUFMAX 1005
- typedef struct elev {
- char nume[80];
- float media;
- } Elev;
- void create_binary_file(char file_name[])
- {
- FILE* binary_file_stream = fopen(file_name, "wb");
- if(binary_file_stream == NULL) {
- fprintf(stderr, "%s", "failed\n");
- }
- Elev elevi[20];
- int n;
- scanf("%d", &n);
- for(int i = 0; i < n; i++) {
- scanf("%s %f", elevi[i].nume, &elevi[i].media);
- }
- //size_t fwrite ( void * ptr, size_t size, size_t count, FILE * stream );
- fwrite(&n, sizeof(int), 1, binary_file_stream);
- fwrite(elevi, sizeof(Elev), n, binary_file_stream);
- fclose(binary_file_stream);
- }
- void read_binary_file(char file_name[]) {
- FILE* binary_file_stream = fopen(file_name, "rb");
- if(binary_file_stream == NULL) {
- fprintf(stderr, "%s", "failed\n");
- }
- int n;
- Elev elevi[20];
- fread(&n, sizeof(int), 1, binary_file_stream);
- fread(elevi, sizeof(Elev), n, binary_file_stream);
- for(int i = 0; i < n; i++) {
- printf("%s %f\n", elevi[i].nume, elevi[i].media);
- }
- fclose(binary_file_stream);
- }
- void positions(char file_name[], int pos[], int* dim)
- {
- FILE* binary_file_stream = fopen(file_name, "rb");
- if(binary_file_stream == NULL) {
- fprintf(stderr, "%s", "failed\n");
- }
- int n;
- Elev elevi[20];
- fread(&n, sizeof(int), 1, binary_file_stream);
- fread(elevi, sizeof(Elev), n, binary_file_stream);
- for(int i = 0; i < n; i++) {
- if(elevi[i].media >= 7.50) {
- pos[(*dim)++] = i;
- }
- }
- fclose(binary_file_stream);
- }
- int main(int argc, char **argv)
- {
- create_binary_file("fisier_binar.bin");
- read_binary_file("fisier_binar.bin");
- int vec[20];
- int dim = 0;
- positions((char*)"fisier_binar.bin", vec, &dim);
- FILE* binary_file_stream = fopen("fisier_binar.bin", "rb");
- if(binary_file_stream == NULL) {
- fprintf(stderr, "%s", "failed\n");
- }
- int n;
- char nume[80];
- fread(&n, sizeof(int), 1, binary_file_stream);
- for(int i = 0; i < dim; i++) {
- int pos = vec[i];
- fseek(binary_file_stream, pos * sizeof(Elev) + sizeof(n), SEEK_SET);
- fread(nume, sizeof(char), 20, binary_file_stream);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement