C´de PGM dosyası okuma çalışmıyor

Katılım
1 Ekim 2017
Mesajlar
1.638
Makaleler
4
Çözümler
13
Daha fazla  
Cinsiyet
Erkek
Merhaba, başlıkta belirtmiş olduğum gibi yapmak istediğim işlem net. PGM dosyasının okunup ilgili değerlerin ekrana basılması. Fakat atacağım kodda 40. satırda hata almaktayım ve o satırı kaldırma/değiştirme lüksüm yok. Ödev olduğundan ötürü o satır kalmalı. Kod codeblocks´ta çalışırken 49.satırdaki "printf" değerlerini vermiyor, Visual Studio Community´de ise belirttiğim 40. satırda hata alıyorum. Çözüm sunabilecek ve hatayı açıklayabilecek var mı? Teşekkürler. İlgili kod ve dosyalar;

C:
#include "headers.h"
typedef struct pgm {
int n;
int m;
int v;
int* data;
} pgm;
unsigned char* readPGM(char* path, int* m, int* n, int* v)
{
pgm* pPgm;
int sayilar;
n = NULL;
m = NULL;
char rgbDegeri[256];
FILE* fp = fopen(path, "r");

if (!fp) {
printf("Hata: Dosya acilamiyor! %s.\n\n", path);
exit(1);
}
pPgm = (pgm*)malloc(sizeof(pgm));

printf("Dosya bulundu, acilan dosya: %s...\n", path);
fscanf(fp, "%s", rgbDegeri);

if (strcmp(rgbDegeri, "P2") == 0) {

printf("DOSYA BASARIYLA ACILDI.\n");
fscanf(fp, "%s", rgbDegeri);
while (rgbDegeri[0] == '#') {
fgets(rgbDegeri, 255, fp);
fscanf(fp, "%s", rgbDegeri);
}

sscanf(rgbDegeri, "%d", &pPgm->n);
fscanf(fp, "%d", &pPgm->m);
fscanf(fp, "%d", &pPgm->v);
printf("Genislik: %d, Yukseklik: %d\n", pPgm->n, pPgm->m);

unsigned char* data = (unsigned char*)malloc ((*m)*(*n) *sizeof(unsigned char));

int i = 0;
do{
fscanf(fp, "%d", &sayilar);
pPgm->data[I] = sayilar;
i++;
} while (i < pPgm->n * pPgm->m);

printf("Loaded PGM. Size: %d x %d, Greyscale: %d \n",pPgm->n, pPgm->m, pPgm->v + 1);
}

fclose(fp);
}

int main(int* m, int* n, int* v) {

char* path = "fen.PGM";
readPGM(path,m,n,v);

return 0;
}

Headers:

C:
#pragma once.
#ifndef HEADERS_H.
#define HEADERS_H.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#endif // !HEADERS_H.
[/I]

PGM dosyaları: Google_Drive
 
Son düzenleyen: Moderatör:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı