Guest User

Untitled

a guest
Apr 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.85 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5. #define DL_LINII 80
  6.  
  7. typedef struct {
  8. int wym_x, wym_y, szarosci;
  9. void *piksele;
  10. } t_obraz;
  11.  
  12. int czytaj(FILE *p,t_obraz *obraz) {
  13.   char s[DL_LINII];
  14.   int znak,koniec=0,i,j;
  15.  
  16.   /*sprawdzenie czy podano prawidłowy uchwyt pliku */
  17.   if (p==NULL) {
  18.     fprintf(stderr,"Blad: Nie podano uchwytu do pliku\n");
  19.     return(0);
  20.   }
  21.   if (fgets(s,DL_LINII,p)==NULL) koniec=1;
  22.   /* Sprawdzenie "numeru magicznego - powinien być P2 */
  23.   if ( (s[0]!='P') || (s[1]!='2') || koniec) {
  24.     fprintf(stderr,"Blad: To nie jest plik PGM\n");
  25.     return(0);
  26.   }
  27.   /* Pominiecie komentarzy */
  28.   do {
  29.     if ((znak=fgetc(p))=='#') {
  30.       if (fgets(s,DL_LINII,p)==NULL) koniec=1;
  31.     }  else {
  32.       ungetc(znak,p);
  33.     }
  34.   } while (! koniec && znak=='#');
  35.  
  36.  if (fscanf(p,"%d %d %d", &(obraz->wym_x), &(obraz->wym_x), &(obraz->szarosci))!=3) {
  37.     fprintf(stderr,"Blad: Brak wymiarow obrazu lub liczby stopni szarosci\n");
  38.     return(0);
  39.   }            
  40.      obraz->piksele = malloc(obraz->wym_x*obraz->wym_y*sizeof(int));   
  41.     int (*piksele)[obraz->wym_x];      
  42.     piksele=(int(*)[obraz->wym_x]) obraz->piksele;  
  43.        
  44.          for(i = 0; i < obraz->wym_y; i++)     
  45.                for(j = 0; j < obraz->wym_x; j++)
  46.                      fscanf(p, "%d", &(piksele[i][j]));
  47.   return obraz->wym_x*obraz->wym_y;
  48. }
  49. int main ()
  50. {
  51.     t_obraz obraz;
  52.     int i,j;
  53.     FILE *plik;
  54.   char nazwa[100];
  55.  
  56.   printf("Podaj nazwe pliku:\n");
  57.   scanf("%s",nazwa);
  58.   plik=fopen(nazwa,"r");
  59.  
  60.   czytaj(plik, &obraz);
  61.   int (*piksele)[(obraz).wym_x];       
  62.     piksele=(int(*)[(obraz).wym_x]) (obraz).piksele;    
  63.     for(i = 0; i < (obraz).wym_y; i++)     
  64.                for(j = 0; j < (obraz).wym_x; j++)
  65.                      printf("jestem fajny %d \n", piksele[i][j]);
  66.            
  67.   return 0;
  68. }
Add Comment
Please, Sign In to add comment