Что с sprintf() ?
Я исползую вот такой код
...
char s[10];
double d = 3.14;
sprintf(s, "pi = %f", d);
...
Но в строку заносятся только нули "0.0000"
void main( void )
{
char buffer[200], s[] = “computer”, c = ‘l’;
int i = 35, j;
float fp = 1.7320534f;
/* Format and print various data */
j = sprintf( buffer, “\tString %s\n”, s );
j += sprintf( buffer + j, “\tCharacter %c\n”, c );
j += sprintf( buffer + j, “\tInteger %d\n”, i );
j += sprintf( buffer + j, “\tReal %f\n”, fp );
printf( “Output\n%s\ncharacter count = %d\n”, buffer, j );
}
http//www.development.efficientit.com
sprintf(s, "pi = %.2f", d);
тогда посе запятой будут точно 2 цифры.
по умолчанию он выводит 6 цифр - т.е. строка получается "pi = 3.140000" - длина 13 символов а размер буферу у тебя только 10!
форматная строка "%f" подразумевает что аргументом функции будет переменная типа float. В твоем примере она double, вот ничего и не работает...
float... double... какая в ... разница!