почему в Сях программа заканчивает работу когда идет команда fprintf?
AV какой нибудь или IO error
Глупый вопрос: а ты f на 0 проверял?
AV какой нибудь или IO errorчто это?
да, сделала некоторые изменения, стало появляться окно "обнаружена ошибка....."
2 ПЖ
да, проверяю, не NULL вроде
Покажи весь код. Или как минимум строчку с fprintf, и все типы ее операндов.
Это так, устоявшаяся практика, чтоб мозги не ебать по полдня.
int nRes = fprintf(...);
if(FAILED(nRes
{
blablabla;
}
else
fflush
FILE * f;
............
iff=fopen(name,"a+"==NULL)
{
.............
return 1;
}
........................
fprintf(f,"............."); // вот тут все и заканчивается
fclose(f);
Мы ж не телепаты..
return 1;А это что?
Может на этом все заканчивается?
Пока не приведёт достаточно полный кусок кода, я обедать не пойду!
перед return 1; стоит printf и на всякий случай scanf
сделала, как Асет написал, только без FAILED И без else - работает один раз, второй раз (как раз когда надо) - нет, зараза
перед вторым разом, понятно, кое-что считается
fprintf(fp,"%d");
При этом забить ещё на все варнинги, что даёт компилятор - ваще зашибись будет
так покажи её, раз народ так просит! или там что-то неприличное/нецензурное?
Если ты хочешь чтобы тебе помогли, то пиши код. Тут нет ясновидящих. Может у тебя там ошибка гораздо раньше(например испортился стек а вылезло только сейчас.
Программист Вася писал программы на Дельфи. При компиляции он никогда не обращал внимания на хинты и ворнинги. Вася выделял память только тогда, когда возникал аксесс виолэйшын. Если указатель при инициализации случайно указывал на уже выделенную область памяти, то память Вася не выделял.
И у меня нет хинтов и варнингов - и не потому, что я отключил их показ
Ну я и не про тебя
fprintf(fp,"%d");Да не будет тут ничего особенного, ну распечатает адрес возврата вот если
fprintf(fp,"%s");тогда другое дело, будет конец строки искать и может не найти
Мне всегда казалось, что leave (или соответсвующий набор команд) вызывается в функции. Ну то есть я точно не помню, но так может быть.
в си вызывающая функция очищает аргументы в стеке - соответственно код очистки знает сколько реальных параметров было передано - и проблем со стеком нет.
Оставить комментарий
Robert08
новый файл нормально создается,f=fopen(name,"a+");// или w, или a
после этого выполняются любые команды до
fprinf(f,"...........");
как только доходит до этой строчки все, конец программы и ничего в файл name не записывается
хотя до этого считывает из файла нормально.
что делать?