我正在尝试编写一个简单的函数,将数字转换为给定格式的字符串,如下所示:
char * write_number(const char *format, void *number) {
char mystring[50];
sprintf(mystring, format, number);
return mystring;
}
唯一的问题是这适用于整数数据类型,但不适用于浮点/ 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;
}
最佳答案
sprintf
的格式字符串指定数据类型,例如 "%i"
打印整数,"%f"
打印 float - 因此您需要根据数据类型更改格式字符串。
另请注意,该函数也不能保证适用于整数,因为它返回一个指向局部变量mystring
的指针,当函数返回时,这将超出范围,并且可以在任何时候通过另一个值,所以返回的指针将指向某个随机值而不是字符串。
关于c - 输入数据类型未知的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554797/