usuwanie komentarza w pgm

Odpowiedz Nowy wątek
2014-12-21 22:59
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);
            }

Pozostało 580 znaków

2014-12-21 23:30
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-22 00:00
0

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

Pozostało 580 znaków

2014-12-22 00:02
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-22 00:05
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

Pozostało 580 znaków

2014-12-22 00:20
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

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-22 00:49
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.

edytowany 1x, ostatnio: ...ajfa, 2014-12-22 00:50

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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