Модератор: Модераторы разделов
voidius
Сообщения: 59
ОС: Arch Linux
Сообщение
voidius » 22.01.2010 17:28
Программа со следующим кодом вываливается с ошибкой сегментирования
Код: Выделить всё
#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
Сообщение
serzh-z » 22.01.2010 17:39
В каком месте она вываливается - надо догадаться? Предположу, что здесь: fclose(fp);
Yaros
Сообщения: 501
ОС: Debian Wheezy / Gentoo
Сообщение
Yaros » 22.01.2010 18:13
Код:
#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
Сообщение
voidius » 22.01.2010 19:00
Спасибо. Глупая ошибка.
Еще вариант
Код: Выделить всё
initFile(&fp);
void initFile(FILE **fp) { *fp=fopen("data.txt","r"); }
Yaros
Сообщения: 501
ОС: Debian Wheezy / Gentoo
Сообщение
Yaros » 22.01.2010 19:09
voidius писал(а): ↑ 22.01.2010 19:00
Еще вариант
Код: Выделить всё
initFile(&fp);
void initFile(FILE **fp) { *fp=fopen("data.txt","r"); }
Какой-то излишне замороченный метод. Можно ведь проще))
=========
=
Мой блог. =
=========
Gentoo-ниасилятар