Błąd podczas kompilowania programu w C


(Phight3r) #1

Oto kod programu w C:

#include 


int main(int argc, char *argv[])

{

    if (argc < 2) return 255;


    FILE *SrcFile;

    char *Buffer;

    for (int i = 1; i < argc; i++)

    {

        if ((SrcFile = fopen(argv[i], "r")) == NULL) return i;


        while (!feof(SrcFile))

        {

            fread(&Buffer, sizeof(char), 1, SrcFile);

            printf("%c", Buffer);     

        }


        fclose(SrcFile);   


    }

    return 0;   

}

i gdy próbuję skompilować Dev-Cpp albo Code::Blocks wyskakuje taki błąd:

'for' loop initial declaration used outside c99 mode

Jak poprawić ten kod żeby działał?


(boger) #2

wywal deklaracje "i" przed petle, bo tak mozna deklarowac w c++


(Sawyer47) #3

C89 nie pozwala na definicję zmiennej tak jak tutaj:

for (int i = 1; i < argc; i++)

Albo kompiluj kod w standardzie C99, albo zmień na

int i;

for (i = 1; i < argc; i++)

(Phight3r) #4

Mam prośbę, czy mógłby mi ktoś skompilować ten kod w Delphi?

program merge;


{$APPTYPE CONSOLE}


var

  final, f: file of byte;

  buf, q: byte;

begin

  if (paramcount < 3) or (paramstr(1) = 'help') then begin

    writeln('uzycie: merge.exe <1 plik> <2 plik> <3...> ');

    readln;

  end else begin

    assignfile(final, paramstr(paramcount));

    rewrite(final);

    for q := 1 to paramcount -1 do begin

      writeln(paramstr(q));

      assignfile(f, paramstr(q));

      reset(f);

      while not eof(f) do begin

       blockread(f, buf, sizeof(buf));

       blockwrite(final, buf, sizeof(buf));

      end;

      closefile(f);

    end;

    closefile(final);

  end;

  writeln('-> ' + paramstr(paramcount));

end.

(nintyfan) #5

Mam propozycję. Nie możesz korzystać z Lazarusa? Aha. Wiem, że to twój temat, ale to pisanie nie na temat pod nim brzydko wygląda.

-- Dodane 11.09.2009 (Pt) 21:57 --

Zauważyłem parę ciekawych rzeczy.

Nie znam się na Delphi, ale czy paramcount nie wskazuje ilości podanych argumentów w linii poleceń, a wartości w paramstr liczymy od 0?


(Phight3r) #6

Kod źródłowy jest ze strony http://osdev.pl/wiki/index.php/Kurs_pisania_OS_cz._I, nie mam Delphi, a ciężko mi ściągnąć (wolne łącze). Ten kod w C był ze strony: http://4programmers.net/Z_pogranicza/Pi ... zeczywisty, ale po uruchomieniu tylko zapiszczy głośniczek i nic się nie dzieje.


([alex]) #7

W delphi to się kompiluje, o co chodzi ci z ta kompilacja.