кк. мне нужно понять жизнь. когда я передаю fp, указатель файла, в новую функцию и открываю ее там, fclose(fp) вызывает ошибку seg! и я обнаружил, что указатель файла 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
}
-Остин