如何在scanf中输入任何类型的数据类型?

时间:2014-11-06 06:12:29

标签: c data-structures

我有一个基本问题。我正在编写一个程序,我需要在队列中输入数据。但数据可以是任何类型。那么如果我不确定数据说明符,我怎么能使用scanf()函数。我想我可以利用工会,但我该怎么办?

样品:

union abc {
    int i;
    float f;
    char c;
};


int main()
{
    union abc data;

    printf("enter data");
    scanf("<----------doubt here

当我们不确定用户可以输入的数据类型时,我不确定如何使用scanf

2 个答案:

答案 0 :(得分:3)

没有。您无法使用scanf()实现此目的。 scanf()需要特定类型数据的格式说明符。如果您不确定输入数据类型,请先使用fgets()从用户处获取数据,然后在代码中执行数据验证/类型检查。

答案 1 :(得分:0)

其中一个方法是

union abc a;
scanf("%i", &a.i);
//Since, it is union, you can scan any desired field.

但是,因此,您无法使用输入的任何输入进行scanf联合。如果您期望不同的输入,那么最好使用fgets读取字符串并解析字符串以检查是否输入了整数或浮点数或字符并分配适当的值。

像:

char input[250];
abc a;
fgets(input, 250, stdin);
//parse the string.
if(isint(input)) {
   a.i = atoi(input, NULL, 10);
} //similarly for other methods.