Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- #include<math.h>
- #define MAX 500
- #define DL_LINII 80
- /*struktura do zapamiętywania danych o obrazie*/
- typedef struct {
- int x, y, szarosci;
- int **obr;
- }obraz;
- /*funkcja zeruje dane*/
- void zeruj(obraz *w){
- w->x=0;
- w->y=0;
- w->szarosci=0;
- }
- /*wczytywanie obrazu*/
- int czytaj(FILE* p, obraz* w)
- {
- char s[DL_LINII];
- int znak,koniec=0,i,j;
- int yh=0;
- /*sprawdzenie czy podano prawidłowy uchwyt pliku */
- if (p==NULL)
- {
- fprintf(stderr,"Blad: Nie podano uchwytu do pliku\n");
- return(0);
- }
- if (fgets(s,DL_LINII,p)==NULL) koniec=1;
- /* Sprawdzenie "numeru magicznego - powinien być P2 */
- if ( (s[0]!='P') || (s[1]!='2') || koniec)
- {
- fprintf(stderr,"Blad: To nie jest plik PGM\n");
- return(0);
- }
- /* Pominiecie komentarzy */
- do
- {
- if ((znak=fgetc(p))=='#')
- {
- if (fgets(s,DL_LINII,p)==NULL) koniec=1;
- }
- else
- {
- ungetc(znak,p);
- }
- } while (! koniec && znak=='#');
- /* Pobranie wymiarow obrazu i liczby odcieni szarosci */
- if (fscanf(p,"%d %d %d", &w->x, &w->y, &w->szarosci)!=3)
- {
- fprintf(stderr,"Blad: Brak wymiarow obrazu lub liczby stopni szarosci\n");
- return(0);
- }
- /*towrzenie tablicy dynamicznej
- w->obr=(int(*)[w->x])malloc(w->x * w->y * sizeof(int)); */
- w->obr=(int**)malloc(w->y * sizeof(int**));
- for (yh=0; yh < w->y; yh++){
- w->obr[yh]=(int*) malloc(w->x * sizeof(int));
- }
- /* Pobranie obrazu i zapisanie w tablicy obraz_pgm*/
- for (j=0; j < w->y; j++)
- {
- for (i=0; i < w->x; i++)
- {
- if (fscanf(p,"%d",&(w->obr[i][j]))!=1)
- {
- fprintf(stderr,"Blad: Niewlasciwe wymiary obrazu\n");
- return(0);
- }
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment