firtina 0 Newbie Poster
// Tuba.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>



unsigned char** pgmRead(char *fileName)
{
    unsigned char **pixel;
    int versiyon;
    int yukseklik;
    int genislik;
    int griSeviyesi;
    char yorum[256];

    int head[3];
    char c1,c2;
    char ch;
    unsigned char *block;

    int i,j;

    FILE *inf;
    inf = fopen(fileName, "rb");
    if (inf == NULL) 
    {
        printf("Dosya yok!n");
        exit(1);
    }
    else 
    {
        fscanf(inf, "%c%c", &c1, &c2);
        printf("%c %c",c1,c2);
        if (c1 != 'P' || (c2 != '2' && c2 != '5')) 
        {
            printf("PGM formatı desteklemeyen dosya!n");
            fclose(inf);
            exit(1);
        }
    }

    for (j=0; j<3; j++) {
        do {
            i=0;
            ch = fgetc(inf);
            if (ch == '#') 
            do {
                yorum[i++]=fgetc(inf);
            } while (yorum[i-1]!= 'n');
            yorum[i]=0;
        //   printf("COMMENT: %s",str); //*** if wished comments can be printed out here
        } while(ch < '0' || ch > '9');

        i = 0;
        yorum[i++] = ch;
        do {
            ch = fgetc(inf);
            yorum[i++] = ch;
        } while(ch >= '0' && ch <= '9');
        yorum[i-1] = 0;
        head[j] = atoi(yorum);
        i=0;
    }

    versiyon= c2-'0';
    genislik= head[0];
    yukseklik=head[1];
    griSeviyesi=head[2];


    //____________hata bunun altında bi yerlerde
    pixel=(unsigned char **)calloc(genislik,sizeof(unsigned char));
    for(i=0;i<genislik;i++)
    {
      pixel[i]=(unsigned char*)calloc(yukseklik,sizeof(unsigned char));
    }
    block=(unsigned char*)calloc(genislik,sizeof(unsigned char));

    for(i=0;i<genislik;i++){
        for(j=0;yukseklik;j++){
            fread((void *)block,sizeof(unsigned char),genislik*yukseklik,inf);
            pixel[i][j]=(unsigned char)block[(j*genislik)+i];
        }
    }
    free(block);
    fclose(inf);

    return (pixel);
}


//int _tmain(int argc, _TCHAR* argv[])
int main()
{
    char dosyaIsmi[15];
    printf("Cevirilecek dosyayı giriniz.\n");
    scanf("%s",&dosyaIsmi);

    pgmRead(dosyaIsmi);

    return 0;
}

This code is fail cause of memory allocaiton;but I don't understand why.

How can I correct it?