c - 输入数据类型未知的 C 函数

标签 c string pointers type-conversion void

我正在尝试编写一个简单的函数,将数字转换为给定格式的字符串,如下所示:

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/

相关文章:

c - 将宏转换为函数的问题 [C]

python - 将字符串转换为列表。 Python [string.split() 行为怪异]

c++ - 尝试将指针与结构一起使用时出错

c - 插入排序调试帮助

c - 如何检查是否在宏中从 C 设置了环境变量

c - 在C中搜索多个单词,并在它们后面显示以逗号分隔的信息

c# - Substring Specific Word 包含它们之间的特殊字符

Java 在数组中搜索匹配的字符串

c - 理解 C 中的结构体和指针变量

c - 使用单循环快速排序