2015-07-31 7 views
-3

Кто-нибудь видит, почему fprintf не пишет в файл, а printf работает нормально?fprintf не записывается в файл

FILE* database; 
    database = fopen("database.txt", "a+"); 



    for (x=-200; x<200; x=x+10) 
    {  
TH1F *hist_Deg = new TH1F("h1", "title", 250, -0.5, 249.5); 

for (j=5000; j<5010; j++) 

{ 
     sprintf(filename,"electronsrough/105.000000MeV/x%d/y0/process%d.txt", x,j); 

     FILE* pfile =fopen(filename,"r"); 

     while(!feof(pfile)) 
     { 
      fscanf(pfile, "%lf /n", &p); 

      hist_Deg->Fill(p); 
      } 
fclose(pfile); 

} 

meana = hist_Deg->GetMean(); 


f->SetPoint(i, x, meana); 
i=i+1; 


fprintf(database, "%f\n", meana); 
printf("%f\n", meana); 

delete hist_Deg; 

} 

PRINTF выходы Meana к Comman линии, но

Файл "database.txt" создается, но остается пустым.

ответ

3

Промывка и закрытие файла базы данных должны выполнять эту работу.

fprintf(database, "%f\n", meana); 
fflush(database); 
fclose(database); 
+0

спасибо !! Хорошо, если я приступлю, конечно, мне придется застревать внутри цикла. Работает! – Katju

+0

Еще один вопрос: теперь я всегда пишу до конца файла. Как удалить все записи при запуске программы? – Katju

+1

@ Katju Вместо открытия с помощью функции 'fopen (...," a + ")' (которая специально говорит 'a'ppend), открывайте с помощью' 'w '' или '' w + "' (что означает 'w'rite) , – Jashaszun

Смежные вопросы