На ум сразу приходят две проблемы. Во-первых, вы звоните testopen
, когда вы явно должны звонить openFile
, но я собираюсь предположить, что это просто опечатка.
Второй более коварный. Если вы хотите изменить указатель файла в пределах openFile
, вам нужно передать указатель на него, так как параметры передаются по значению. Вы можете подумать, что передаете указатель, но на самом деле вам нужен двойной указатель, поскольку вы пытаетесь изменить только указатель FILE , а не то, на что он указывает.
Другими словами, вам понадобится что-то вроде:
int openFile (const char *arg, FILE **input) {
*input = fopen( arg, "r");
if (*input == NULL)
return 1;
return 0;
}
:
rc = openFile (argv[4], &(args->A));