c - 如何制作一个多用途输入函数input();在C语言中?

标签 c

我是一个C编程初学者,在制作程序时我想知道是否可以有一个通用的输入功能input();进行设置,以便要求输入大括号中给出的变量名称,如下所示:

input(a);

结果:
输入a的值:10

现在(输入后)如果我在任何程序中这样写,例如:

#include<stdio.h>
main()
{
    int a;
    float b;
    char c;
    input (a);
    printf("value of a = %d\n",a);  // 1
    input(b);
    input(c);
    printf("value of b = %f\n",b);  // 2
    printf("c = %c\n",c);           // 3
}

那么输出应该是这样的:
输出:
enter value of a: 10<br/> ***value of a = 10***<br/> enter value of b: 10.0<br/> enter value of c: D<br/> ***value of b = 10.000000***<br/> ***c = D***

即函数参数应根据相关变量的类型(如 char、float、int 等)取值,如 if a是 char 然后在 a 中输入值将被相应保存。 我想使用结构来实现它,但我无法思考如何链接 input(); 中传递的实际参数与结构成员

更新:我编写了第 1,2 和 3 行(在注释中:printf() 函数)只是为了显示 a,b 的值和 c 适本地/正确地存储在它们相应的类型中

最佳答案

与您编写的语法实际上相同 - 不,您需要为此使用 C++ 功能(函数重载),但值得知道的是,在内部它只会使用一组不同的函数,所以实际上它几乎与input_int、input_char 等

您可以使用 union (可能是结构内的 union - 您需要在某处保存实际类型),但这是完全不同的方法。

宏(尤其是 C11 _Generic,如果您可以使用 C11 功能)也可能是不错的选择。

关于c - 如何制作一个多用途输入函数input();在C语言中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911209/

相关文章:

c - 试图找到字符串中某些字符的频率,但结果相去甚远

c - 传递许多变量与传递结构

C 设计 : Pass memory address or return

java - 在 native c/c++ 代码中发生崩溃时,JVM 中的设置忽略 JRE 错误消息?

c - 哪个分配更快? malloc 与局部变量

c - 结构体定义

c - 舍入到更大的整数 c

c - 通过值和引用将 c 中结构类型的指针传递给函数

c - 获取安装在 solaris 11.2 机器上的卷列表

c - 链表程序错误