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 DL_LINII 80
- typedef struct {
- int wym_x, wym_y, szarosci;
- void *piksele;
- } t_obraz;
- int czytaj(FILE *p,t_obraz *obraz) {
- char s[DL_LINII];
- int znak,koniec=0,i,j;
- /*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=='#');
- if (fscanf(p,"%d %d %d", &(obraz->wym_x), &(obraz->wym_x), &(obraz->szarosci))!=3) {
- fprintf(stderr,"Blad: Brak wymiarow obrazu lub liczby stopni szarosci\n");
- return(0);
- }
- obraz->piksele = malloc(obraz->wym_x*obraz->wym_y*sizeof(int));
- int (*piksele)[obraz->wym_x];
- piksele=(int(*)[obraz->wym_x]) obraz->piksele;
- for(i = 0; i < obraz->wym_y; i++)
- for(j = 0; j < obraz->wym_x; j++)
- fscanf(p, "%d", &(piksele[i][j]));
- return obraz->wym_x*obraz->wym_y;
- }
- int main ()
- {
- t_obraz obraz;
- int i,j;
- FILE *plik;
- char nazwa[100];
- printf("Podaj nazwe pliku:\n");
- scanf("%s",nazwa);
- plik=fopen(nazwa,"r");
- czytaj(plik, &obraz);
- int (*piksele)[(obraz).wym_x];
- piksele=(int(*)[(obraz).wym_x]) (obraz).piksele;
- for(i = 0; i < (obraz).wym_y; i++)
- for(j = 0; j < (obraz).wym_x; j++)
- printf("jestem fajny %d \n", piksele[i][j]);
- return 0;
- }
Add Comment
Please, Sign In to add comment