Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <string.h>
- int **wczytywanieObrazu(int *wys);
- struct obraz
- {
- char nazwaObrazu[100];
- char typ[3];
- int wys;
- int szer;
- int maxszar;
- };
- int main()
- {
- int szer = 0;
- int wys=0;
- struct obraz ob1;
- ob1.wys = wys;
- ob1.szer = 10;
- ob1.maxszar = 1;
- strcpy(ob1.typ, "P2");
- strcpy(ob1.nazwaObrazu, "obraz.txt");
- printf("Nazwa obrazu: %s\n", ob1.nazwaObrazu);
- printf("Wys: %d\n", ob1.wys);
- printf("Szer: %d\n", ob1.szer);
- printf("Maxszar: %d\n", ob1.maxszar);
- printf("Typ: %s\n", ob1.typ);
- int **odczyt=0;
- char wybor[10];
- int a = 1;
- int i = 0;
- int j = 0;
- puts("Wcisnij:\nq - Wczytaj obraz\nk - Zamknij porgram\nc - Wyczysc ekran");
- while (a == 1) {
- do {
- scanf("%s", &wybor);
- } while (wybor[0] != 'q' && wybor[0] != 'c' && wybor[0] != 'k');
- printf("wysokosc: %d", wys);
- printf("szerokosc: %d", szer);
- switch (wybor[0]) {
- case 'q':
- odczyt = wczytywanieObrazu(&wys, &szer);
- printf("\n");
- for (int i = 0; i < wys; i++) {
- printf("\n");
- for (int j = 0; j < 9; j++) {
- printf("%d ",odczyt[i][j]);
- }
- }
- break;
- case 'k':
- a = 0;
- break;
- case 'c':
- system("cls");
- break;
- }
- if (a == 1)
- puts("\nWcisnij:\nq - Wczytaj obraz\nk - Zamknij porgram\nc - Wyczysc ekran");
- }
- }
- int **wczytywanieObrazu(int *wys, int *szer)
- {
- int** odczyt;
- char nazwaPliku[15];
- char znak;
- char typ[3];
- int i = 0;
- int j = 0;
- //int wys,
- //int szer,
- int maxszar; // wysokosc, szerokosc, maskymalna szarosc
- char linia[100];
- puts("Podaj nazwe obrazu do wczytania");
- scanf("%s", &nazwaPliku);
- FILE* plik = fopen(nazwaPliku, "r");
- if (plik == NULL)
- printf("Obraz o tej nazwie nie istnieje\n");
- else {
- fscanf(plik, "%s", typ);
- printf("%s\n", typ);
- fgets(linia, 100, plik);
- if (typ[0] == 'P' && (typ[1] == '2' || typ[1] == '5')) {
- printf("Prawidlowy typ\n");
- fscanf(plik, "%c", &znak);
- if (znak == '#') {
- fgets(linia, 100, plik);
- fscanf(plik, "%d %d", wys, szer);
- printf("%d %d\n", *wys, *szer);
- }
- else {
- fseek(plik, -1, SEEK_CUR);
- fscanf(plik, "%d %d", wys, szer);
- printf("%d %d\n", *wys, *szer);
- }
- fgets(linia, 100, plik);
- fscanf(plik, "%c", &znak);
- if (znak == '#') {
- fgets(linia, 100, plik);
- fscanf(plik, "%d", &maxszar);
- printf("%d\n", maxszar);
- }
- else {
- fseek(plik, -1, SEEK_CUR);
- fscanf(plik, "%d", &maxszar);
- printf("%d\n", maxszar);
- }
- odczyt = malloc(*wys, sizeof(*odczyt));
- if (odczyt != NULL)
- {
- for (int a = 0; a < *wys; a++)
- {
- odczyt[a] = malloc(*szer, sizeof(odczyt));
- if (odczyt[a] == NULL)
- free(odczyt);
- }
- }
- fgets(linia, 100, plik);
- fscanf(plik, "%c", &znak);
- if (znak == '#') {
- fgets(linia, 100, plik);
- for (int i = 0; i < *wys; i++) {
- for (int j = 0; j < *szer; j++) {
- fscanf(plik, "%d ", odczyt[i][j]);
- }
- }
- for (int g = 0; g < *wys; g++) {
- printf("\n");
- for (int h = 0; h < *szer; h++) {
- printf("%d ", odczyt[g][h]);
- }
- }
- }
- else {
- fseek(plik, -1, SEEK_CUR);
- for (int i = 0; i < *wys; i++) {
- for (int j = 0; j < *szer; j++) {
- fscanf(plik, "%d ", &odczyt[i][j]);
- }
- }
- for (int g = 0; g < *wys; g++) {
- printf("\n");
- for (int h = 0; h < *szer; h++) {
- printf("%d ", odczyt[g][h]);
- }
- }
- }
- }
- else {
- printf("nieprawidlowy typ");
- }
- }
- return odczyt;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement