Началось программирование несколько месяцев назад, поэтому мой вопрос может заставить вас чувствовать себя плохо (извините).Передача указателя файла на функцию
Позволяет сказать, что я хотел напечатать что-нибудь в мой файл test.txt из функции, как это:
главная:
int main()
{
FILE *fp;
test(fp);
...
}
функция:
void test(FILE *fp)
{
fp = fopen("test.txt","w"); // it crashed here
...
}
Debugging в VS говорит: " Переменная «fp» используется без инициализации ».
Тогда я решил изменить первую строку моей главной функции:
FILE *fp = NULL;
И вдруг все работает отлично.
Может кто-нибудь, пожалуйста, объясните мне это поведение?
Это неопределенное поведение читать неинициализированное значение (которое является то, что вы делаете, когда вы вычислите выражение 'тест (FP)'). –
Код также не имеет смысла, еще раз демонстрируя, что неопределенное поведение является * симптомом *, а не проблемой. –
проблема заключается в том, что при возврате теста переменная fp не сохраняет значение, назначенное ей вызовом fopen. Итак, если вы используете его позже в основном, у вас будет проблема – bruceg