Есть кусок кода:
#include <stdio.h>
....
int main( int argc, char **argv ) {
....
FILE *fptr;
initLog( fptr ); /* создаем поток в файл */
....
writeLog( fptr, "SOme teXt" ); /* пишем в конец фйла */
....
closeLog( fptr ); /* закрываем поток */
return 0;
}
...
void initLog( FILE *fl ) {
fl = fopen( "someF.log", "a" ); /* пытаемся открыть файл */
if( file == NULL ) { /* если облом.. */
printf( "Cannot open %s.\n", "someF.log" ); /* пишем еррор */
exit( EXIT_FAILED ); /* завершаем прогу */
}
return;
}
void writeLog( FILE *fptr, const char *str ) {
fprintf( fptr, "Log: %s\n", str ); /* пишем в файл строку */
return;
}
...
Файл успешно создается и откравается, но, почему-то при передаче указателя fptr в ф-ию writeLog() возникает segmentation fault. Если
в main ф-ии ф-ию initLog(...) заменить просто на fptr = fopen(...);...
, то все нормально работает. Вопрос как раз в том, почему возникает
этот сег фаулт в первом случае?
glib 1.2.10, gcc 3.3.3