- 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;
Headers:
[/I]
PGM dosyaları: Google_Drive
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.
PGM dosyaları: Google_Drive
Son düzenleyen: Moderatör: