problem z otwieraniem pliku w funkcji

0

Witam! Chcę otworzyć 2 pliki w funkcji. Napisalem takie coś:


int main(void) {
  FILE *otworz, *zapisz;
  otworz_pliki(&otworz, &zapisz);
}

void otworz_pliki(FILE** otworz, FILE** zapisz) {
    if ((*otworz = fopen("zle.dat", "rb")) == NULL) {
        fprintf(stderr, "Blad podczas otwierania pliku!");
        getchar();
        exit(EXIT_FAILURE);
    }

    if ((*zapisz = fopen("raport.txt", "w")) == NULL) {
        fprintf(stderr, "Blad podczas tworzenia pliku wyjsciowego!");
        getchar();
        exit(EXIT_FAILURE);
    }
}

w headerze:

void otworz_pliki(FILE**, FILE**);

Program kompiluje się i działa, ale w logu wywala takie coś:
c:\users\kamil\documents\visual studio 2010\projects\licznik_pasazerow\licznik_pasazerow\header.h(39): warning C4028: formal parameter 1 different from declaration
c:\users\kamil\documents\visual studio 2010\projects\licznik_pasazerow\licznik_pasazerow\header.h(39): warning C4028: formal parameter 2 different from declaration

Jak powinno być prawidłowo?

0

Używasz funkcji otworz_pliki nie deklarując jej przed głównym programem.
Dodaj deklaracę:

void otworz_pliki(FILE**, FILE**);

i komunikaty znikną.

A czy nie lepiej zrezygnować ze wskaźników do wskaźników FILE i zrobić tylko tak:

void otworz_pliki(FILE*, FILE*);

int main() {
    FILE *otworz, *zamknij;
    otworz_pliki(otworz, zamknij); 
    reutrn 0;
}

void otworz_pliki(FILE* o, FILE* z) {
    // ...
    o = fopen( ... );
    z = fopen( ... );
    // ...
}
0

Ok, już wiem, wszystko było ok, próbowałem bez wskaźników, ale nie działało. Powód - przypadkowo dwa razy wkleiłem różną deklarację void otworz_pliki(...). Temat do zamknięcia ;)

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