usuwanie komentarza w pgm

0

Witam, mój problem polega na tym, że nie mam pojęcia jak dobrze zdefiniować długość linii komentarza. Gdy definiuje więcej niż jest w pliku pgm, to "wciąga" mi również szerokość tego obrazu. Program działa prawidłowo dopiero gdy długość deklaruję na bardzo podobną długości komentarza. Czy ktoś wie na czym polega problem?

 #define DL_LINII 60 // tutaj muszę zmieniać liczbę
#include <stdio.h>
#include <stdlib.h>
typedef struct Obraz
{
    int szerokosc;
    int wysokosc;
    int odcienie;
    int **obraz;
}Obraz;

void wczytajObraz(Obraz *o)
{
    char buf[5];
	char s[DL_LINII];
    int i,j,koniec=0,znak;
    FILE *plik;
	plik=fopen("nazwa.pgm","r");
    if(plik)
    {
		do
		{
			fscanf(plik,"%s",buf);
			fscanf(plik,"%d %d",&o->szerokosc,&o->wysokosc);
			fscanf(plik,"%d",&o->odcienie);
			if ((znak=fgetc(plik))=='#')
			{
				if (fgets(s,DL_LINII,plik)==NULL) koniec=1;
			}  else
			{
				ungetc(znak,plik);
			}
0

Czytaj znak po znaku do '\n' włącznie.

0

Ale czy sama funkcja fgets nie kończy działania na końcu linii?

0

Owszem kończy ale może skończyć wcześniej po osiągnięciu DL_LINII.

0

Tylko właśnie jest problem, gdy DL_LINII jest zdefiniowane na np. 100, a komentarz ma około 20 znaków. Wtedy usuwa także szeokość z następnej linii

0

Jedno z dwóch:

  1. Twój plik ma nietypową dla systemu konwencję nowego wiersza, w sensie "\n" "\r\n" "\r"
  2. Błąd masz w innym miejscu
0

Pewnie błąd w innym miejscu (sprawdzałem na kilku plikach .pgm). Ale to jest dziwne, że bez różnicy czy zdefiniuje 80 czy 200, każda liczba większa od długości komentarza kasuje tylko szerokość w tym pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1