Otwarcie pliku (FILE przekazane do funkcji jako argument)

0

Witam.

Mam problem. Chce zadeklarować FILE w main.c natomiast otworzyć plik w funkcji, która mieści się w osobnym pliku. Całość już mi działa ale zwraca zły wynik (zawsze in_handle==NULL jest prawdą). Sprawdzałem w lib.c co jest w argv[] przy wywołaniu programu, kiedy dam argv[0] to mam nazwę pliku a kiedy argv[1] śmieci... jednakże przy fopen muszę mieć argv[1], bo inaczej jest błąd. Całość się kompiluje dobrze, tylko nie działa jak powinno. Gdzie tkwi problem?? czego nie dostrzegam??...
Plik main.c

int main(int argc, char *argv[])
{
    FILE *in_handle;
    char bufor[BUFSIZ];

    if (otworz_plik(in_handle, &argv[1])) {
printf("Plik otwarty");
    } else
printf("Blad otwarcie pliku!");


    return 0;
}

Plik lib.c

int otworz_plik(FILE * in_handle, char *argv[1])
{
    in_handle = fopen(argv[1], "r");
    if (in_handle == NULL) {
printf("Poprawne wywolanie: ./main nazwa_pliku\n");
return 0;
    } else
return 1;
}

Całość jest tutaj:
https://github.com/smt116/c/tree/master/petle/9

1

tak:

int otworz_plik(FILE ** in_handle, char *argv[1])
{
    *in_handle = fopen(argv[1], "r");
    if (*in_handle == NULL) {
printf("Poprawne wywolanie: ./main nazwa_pliku\n");
return 0;
    } else
return 1;
}

wywołanie:

otworz_plik(&in_handle, &argv[1])
0
krwq napisał(a)

tak:

int otworz_plik(FILE ** in_handle, char *argv[1])
{
    *in_handle = fopen(argv[1], "r");
    if (*in_handle == NULL) {
printf("Poprawne wywolanie: ./main nazwa_pliku\n");
return 0;
    } else
return 1;
}

wywołanie:

otworz_plik(&in_handle, &argv[1])

Kompiluje się ale dalej przy wywołaniu ./main test daje komunikat, że plik nie został otwarty.

0

Dałem tak:

*in_handle = fopen(argv[1], "r");

i chyba działa, otwiera się. Przetestuje później czy wszystko śmiga jak powinno. Dziękuje za odpowiedź wyżej ;)

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