Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdlib.h>
- #include <math.h>
- #include <stdio.h>
- #include <locale.h>
- int odczyt_pliku(struct obraz* hp1);
- void zwalnianie_pamieci(struct obraz* hp1);
- struct obraz
- {
- char *nazwa_pliku;
- char standard;
- int szerokosc;
- int wysokosc;
- int zakres;
- int** piksele; //tablica na piksele
- };
- int main()
- {
- int x;
- int wybor = 0;
- int nazwa[100];
- struct obraz* hp1;
- hp1 = (struct obraz*)malloc(1 * sizeof(struct obraz));
- do
- {
- puts("Menu");
- puts("1.Odczyt");
- puts("2.Wyjscie");
- wybor = getch();
- system("cls");
- switch (wybor)
- {
- case ('1'):
- x = odczyt_pliku(hp1);// odczyt z pliku
- if (x == 0)
- {
- puts("Blad");
- exit(0);
- }
- else
- {
- //zwalnianie_pamieci(&hp1);// zwolnienie pamieci w tablicy 2d
- }
- break;
- case ('2'):
- exit(0);
- break;
- default:
- break;
- }
- } while (wybor != '2');
- return 0;
- }
- int odczyt_pliku(struct obraz* hp1)
- {
- FILE* plik;
- char komentarze;
- hp1->nazwa_pliku = (char*)malloc(100 * sizeof(char));//alokacja tablicy z nazwa
- printf("Podaj nazwe pliku:\n");
- scanf("%s", hp1->nazwa_pliku);//wczytanie nazyw obrazu
- plik = fopen(hp1->nazwa_pliku, "r");//otwarcie pliku o podanej nazwie
- if (plik == NULL)//czy plik sie otworzyl
- {
- perror("Tablice.csv");//komunikat dlaczego blad
- return 0;
- }
- else
- puts("Znaleziono plik");
- fscanf(plik, "%c", &komentarze);
- while (komentarze == '#')//szukanie komentarzy
- {
- while (komentarze!='\n')//dopoki nie jest nowa linia
- {
- fscanf(plik, "%c", &komentarze);
- }
- fscanf(plik, "%c", &komentarze);//przeskok do nowej lini
- }
- fseek(plik, -1, SEEK_CUR); //przesuniecie znacznika pliku o jeden w tył
- fscanf(plik, "%s", &hp1->standard);//musi być na adres :)(hp1->wysokosc) * sizeof&(hp1->piksele)
- fscanf(plik, "%c", &komentarze);
- while (komentarze == '#')
- {
- while (komentarze != '\n')
- {
- fscanf(plik, "%c", &komentarze);
- }
- fscanf(plik, "%c", &komentarze);
- }
- fseek(plik, -1, SEEK_CUR);
- fscanf(plik, "%d", &hp1->szerokosc);
- fscanf(plik, "%c", &komentarze);
- while (komentarze == '#')
- {
- while (komentarze != '\n')
- {
- fscanf(plik, "%c", &komentarze);
- }
- fscanf(plik, "%c", &komentarze);
- }
- fseek(plik, -1, SEEK_CUR);
- fscanf(plik, "%d", &hp1->wysokosc);
- fscanf(plik, "%c", &komentarze);
- while (komentarze == '#')
- {
- while (komentarze != '\n')
- {
- fscanf(plik, "%c", &komentarze);
- }
- fscanf(plik, "%c", &komentarze);
- }
- fseek(plik, -1, SEEK_CUR);
- fscanf(plik, "%d", &hp1->zakres);
- //deklaracja pamieci na tablice 2 wymiary
- hp1->piksele=(int**)malloc(hp1->wysokosc * sizeof(int));//hp1->piksele = malloc((hp1->wysokosc * hp1->szerokosc * sizeof(int)));
- if(hp1->piksele!=NULL)
- {
- for (int i = 0; i < (hp1->wysokosc); i++)
- {
- hp1->piksele[i] = (int*)malloc(hp1->szerokosc * sizeof(int));//alokacja tablicy na odpowiednin rozmiar
- if (hp1->piksele[i]==NULL)
- {
- return 0;
- }
- }
- for (int i = 0; i < hp1->wysokosc ; i++)//wpisanie wartosci z pliku
- {
- for (int j = 0; j < hp1->szerokosc - 1; j++)
- {
- fscanf(plik, "%c", &komentarze);//czyta znak
- while (komentarze == '#')//jezeli komentarz
- {
- while (komentarze != '\n')//dopóki nie \n
- {
- fscanf(plik, "%c", &komentarze);
- }
- fscanf(plik, "%c", &komentarze);
- }
- fseek(plik, -1, SEEK_CUR);
- fscanf(plik, "%d", &hp1->piksele[j][i]);
- }
- }
- printf("standard:%s\n", &hp1->standard);
- }
- else
- {
- puts("problem z alokacja tablicy");
- fclose(plik);
- return 0;
- }
- fclose(plik);
- return 1;
- }
- void zwalnianie_pamieci(struct obraz* hp1)
- {
- for (int i = 0; i < (hp1->wysokosc); i++)
- {
- free((hp1->piksele[i]));
- puts("zwalniam");
- }
- //free(&(hp1->piksele));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement