кк. Мне нужно понять жизнь.
когда я передаю fp, указатель файла, в новую функцию и открываю ее там, fclose (fp) вызывает ошибку сегмента! и я обнаружил, что указатель файла, fp, никогда не был открыт.
main(int argc, char *argv[])
{
File *fp;
//*argv == filename
functionToOpenFile(fp,*argv);
//do stuff
fclose(fp);
}
functionToOpenFile(File *fp, char *filename)
{
fp = fopen(filename,"w");
//error handling not shown
}
Мое решение, которое работает, состоит в том, чтобы передать адрес fp, который является указателем на указатель на файл. я не понимаю, почему это меняет вещи
main(int argc, char *argv[])
{
File *fp;
//*argv == filename
functionToOpenFile(&fp,*argv);
//do stuff
fclose(fp);
}
functionToOpenFile(File **fp, char *filename)
{
*fp = fopen(filename,"w");
//error handling not shown
}
-AUstin