Я использую Visual Stduio 2008 C ++. И я пишу приложение формы Windows. Я объявляю массив FILE * в верхней части Form1.h как глобальное значение
const int k = 1; //i need to change k to 2 sometimes.
FILE* myFiles[k];
В конструкторе From1 я использую цикл for, чтобы открыть мои файлы.
for(int i = 0; i < k; ++i)
{
char filename[100] = "";
sprintf(filename,"Record/record_%ld_%d.txt",g_recordName,i);
myFiles[i] = fopen(filename,"w");
}
И я установил таймер для этой формы, каждый тик которой будет выводить что-то в myFiles.
Пока все хорошо, но если я поставлю что-то вроде
fprintf(myFiles[0],"%d",1234);
в конструктор после цикла for. Это работает нормально в этой строке, но если я собираюсь fprintf что-либо в тиковом событии таймера, я обнаружил, что myFiles [0] уже имеет значение NULL !!
Кроме того, если я fprintf(myFiles[0],"something")
в конструкторе, указатель FILE по-прежнему не будет нулевым в событии тика таймера.
ПОЧЕМУ это происходит ?! кто-нибудь знает почему?