Решение найдено. (ex: Нужна помощь коллективного разума)

потому что мой уже трещит по швам :).

Неведомая фигня происходит на моем компе. У меня есть вот такая программка:

// a.c
#include 

int main (int argc, char** argv) {
  FILE* f = fopen("x", "w");
  fprintf(f, "Hello!\n");
  printf("Hello!\n");
  fclose(f);
}

Компилирую, запускаю:

a.exe > y

— файл "y" создается, а "x" — нет.

Windows 7, компилятор mingw (Visual Studio C++ тоже пробовал).

И такая хрень происходит с любым моим C'шным скомпилированным кодом — файлы не создаются. Потом вдруг рррраз, создались! А потом снова не создаются.

Update: Спасибо Лехе aka "Android", решение найдено. Это был Avast, мать его. Стоит выключить его файловый экран, все работает, включаю - перестает. И, блин, хоть бы он голос подал, что ему моя программа подозрительна. Так нет, он молча все делает - без намека на проблему. И, как пишут на форумах, эта проблема с Avast не только у меня появилась после его обновления до версии 7.

3 комментария:

Анонимный комментирует...

Странное поведение. Могу предположить, что содержимое файла осело до лучших времен в буфере операционной системы. Не поможет ли явный вызов fflush()?

Stas Davydov комментирует...

fflush - первое, что я попробовал сделать. Не работает.

Если оно и осело в недрах ОС, то навсегда.

Stas Davydov комментирует...

Это был антивирус Avast.

>:-E