Я пытаюсь написать простую функцию, которая преобразует число в строку относительно заданного формата, что-то вроде этого:Функции в C с типом данными неизвестных входного
char * write_number(const char *format, void *number) {
char mystring[50];
sprintf(mystring, format, number);
return mystring;
}
Единственная проблема заключается в что это работает с целым типом данных, но не с типом данных float/double. Есть ли способ сделать эту работу независимо от типа данных.
Спасибо!
Дополнение к первоначальному вопросу:
Спасибо за ваши предложения. Мне не удалось заставить его работать, вот полный пример того, что я пытаюсь получить.
#include <stdio.h>
void write_number(const char *format, void *number) {
char mystring[50];
sprintf(mystring, format, *number);
printf("%s\n", mystring);
}
int main(void) {
int a = 10;
float b = 20;
double c = 40;
write_number("int: %03d", &a);
write_number("float: %6.2f", &b);
write_number("double: %6.2f", &c);
return 0;
}
Нет, и эта функция в любом случае нарушена: она возвращает адрес локальной переменной. – melpomene
Да, это правда, функция не работает из-за неправильного оператора return. Но почему это работает с целым типом данных? –
добавить это: printf ("void * =% d, int =% d, float =% d, double =% d", sizeof (void *), sizeof (int), sizeof (float), sizeof (double)) , я предполагаю, что вы получите 4, 4, 8, 8 (assumin g float не работает), или если float работает, вы получите 4, 4, 4, 8. – Alex