Мне нужно вывести двойное значение в файл. Так что для всех моих других строк, которые я должен вывести, я использую fputs, потому что я думаю и рассчитываю, что fputs быстрее, чем fprintf.
Но если я хочу вывести двойное значение, я не могу сделать это с помощью fputs, поэтому я попробовал fprintf. Это очень медленно. Мне нужно больше времени, если я заменю fprintf и положу туда fputs("TEST",file);
Как я могу вывести двойное число так же быстро, как строку. Нужно ли сначала преобразовать его в строку?
Я нашел некоторое преобразование. Но если я использую их, я работаю так же медленно, как если бы я использовал fprintf.
Итак, как я могу поместить двойное значение в файл так быстро, как если бы я поместил строку в файл?
fputs("TEST",fileout); //FAST
fprintf(fileout, "%f",p); //SLOW
РЕДАКТИРОВАТЬ:
Время с fprintf double:
END.PROCESSING.DATA: 2013-04-26 08:10:33.000
END.CALC.IN.FILE: 2013-04-26 08:11:13.000
Время со строками fputs:
END.PROCESSING.DATA: 2013-04-26 08:14:10.000
END.CALC.IN.FILE: 2013-04-26 08:14:37.000
Код для того времени:
now = time (0);
strftime (buff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&now));
printf ("END.PROCESSING.DATA: %s\n", buff);
//output file
FILE *fileout;
fileout = fopen("out.txt","w");
double p;
for(i=0; i<17000;i++){
for(j=0; j<i;j++){
for(z=0;z<400;z++){
//DO SOME WORK
}
p = 1.0;
fputs(allsubsts[i],fileout);
fputs(";",fileout);
fputs(allsubsts[j],fileout);
fputs(";",fileout);
//fprintf(fileout, "%.21g", p);
fputs("TEST",fileout);
fputs(";\n",fileout);
}
}
fclose(fileout);
now = time(0);
strftime(buff,100,"%Y-%m-%d %H:%M:%S.000", localtime(&now));
printf("END.CALC.IN.FILE: %s\n",buff);
Изменения между временем - это только изменение, которое я поместил в файл вместо строки TEST.
%f
вместоfloat
,%lf
вместоdouble
. - person Crozin   schedule 25.04.2013%f
, и%lf
предназначены для двойного числа. Невозможно передатьfloat
вfprintf
. - person R.. GitHub STOP HELPING ICE   schedule 25.04.2013