xuyunhai20160827 Ответов: 2

Как преобразовать double в const char*


double x = 0.123f;
char s[50] = {0};
sprintf(s, "%lf",x);

but how to spintf "XPosition"+"0.123" ?


Что я уже пробовал:

sprintf(s, "%lf","XPositon"+x);

2 Ответов

Рейтинг:
14

k5054

sprintf работает так же, как printf, но выводит в строку, а не stdout so

printf("Xposition %lf", x);
становится
sprintf(s, "Xpostion %lf", x);

sprintf может производить переполнение буфера, поэтому вместо этого лучше использовать snprintf (). например
snprintf(s, 50, "Xposition %lf", x)
В более общем плане подпись для snprintf такова
int snprintf(char *str, size_t size, const char *format, ...);

Обратите внимание, что snprintf() усекает вывод, если он превышает заданный размер, но возвращает количество символов, которые он содержит было бы написали если было достаточно свободного места это значит что вы можете

if( snprintf(s, 50, "Xpostion %lf" x) > 50) {
    // handle buffer overflow ...
} 


Рейтинг:
1

Patrice T

Вы пробовали что-то вроде:

sprintf(s, "XPositon%lf", x);

Так же, как и с printf.