DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   About matris allocation and reading pgm files (http://www.daniweb.com/forums/thread236246.html)

firtina Nov 5th, 2009 6:53 am
About matris allocation and reading pgm files
 
// 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?


All times are GMT -4. The time now is 7:57 am.

Forum system based on vBulletin Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
©2003 - 2010 DaniWeb® LLC