gcc. Передать указатель на файл функции [solved]

Модератор: Модераторы разделов

voidius
Сообщения: 59
ОС: Arch Linux

gcc. Передать указатель на файл функции [solved]

Сообщение voidius »

Программа со следующим кодом вываливается с ошибкой сегментирования

Код: Выделить всё

#include <stdio.h>

void initFile(FILE *);

int main(void)
{
        FILE *fp;
        initFile(fp);
        fclose(fp);

        return 0;
}

void initFile(FILE *fp)
{
        fp = fopen("data.txt", "r");
}

Компилируется и линкуется в линуксе при помощи c++ тихо; файл data.txt существует с полным доступом. При вызове ф-ции fopen() в ф-ции main() программа работает. В чем может быть дело?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: gcc. Передать указатель на файл функции [solved]

Сообщение serzh-z »

В каком месте она вываливается - надо догадаться? Предположу, что здесь: fclose(fp);
Спасибо сказали:
Аватара пользователя
Yaros
Сообщения: 501
ОС: Debian Wheezy / Gentoo

Re: gcc. Передать указатель на файл функции [solved]

Сообщение Yaros »

Код:

#include <stdio.h> FILE *initFile( void ); int main(void) { FILE *fp; fp = initFile(); fclose(fp); return 0; } FILE *initFile( void ) { FILE *fp; fp = fopen("data.t", "r"); return fp; }

На стиль не обращайте внимания, писал на скорую руку. Ошибка довольно очевидная.
=========
=Мой блог. =
=========
Gentoo-ниасилятар
Спасибо сказали:
voidius
Сообщения: 59
ОС: Arch Linux

Re: gcc. Передать указатель на файл функции [solved]

Сообщение voidius »

Спасибо. Глупая ошибка.

Еще вариант

Код: Выделить всё

initFile(&fp);

void initFile(FILE **fp) { *fp=fopen("data.txt","r"); }
Спасибо сказали:
Аватара пользователя
Yaros
Сообщения: 501
ОС: Debian Wheezy / Gentoo

Re: gcc. Передать указатель на файл функции [solved]

Сообщение Yaros »

voidius писал(а):
22.01.2010 19:00
Еще вариант

Код: Выделить всё

initFile(&fp);

void initFile(FILE **fp) { *fp=fopen("data.txt","r"); }

Какой-то излишне замороченный метод. Можно ведь проще))
=========
=Мой блог. =
=========
Gentoo-ниасилятар
Спасибо сказали: