Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C编程中,如何知道用户提供的输入是字符串、浮点还是整数_C_Input - Fatal编程技术网

在C编程中,如何知道用户提供的输入是字符串、浮点还是整数

在C编程中,如何知道用户提供的输入是字符串、浮点还是整数,c,input,C,Input,用户只会给出一次输入,输出应根据输入进行打印 如果用户输入一个字符串,它应该打印它是字符串。 如果用户输入一个整数,它应该打印它是整数。 如果用户输入一个浮动,它应该打印它是浮动的。 使用fgets读取一行,然后使用不同的格式说明符重复调用缓冲区上的sscanf。检查每个sscanf调用的返回值,查看格式是否正确 char line[80]; int ival; float fval; fgets(line, 80, stdin); if (sscanf(line, "%d", &i

用户只会给出一次输入,输出应根据输入进行打印

如果用户输入一个字符串,它应该打印它是字符串。 如果用户输入一个整数,它应该打印它是整数。 如果用户输入一个浮动,它应该打印它是浮动的。 使用fgets读取一行,然后使用不同的格式说明符重复调用缓冲区上的sscanf。检查每个sscanf调用的返回值,查看格式是否正确

char line[80];
int ival;
float fval;

fgets(line, 80, stdin);

if (sscanf(line, "%d", &ival))
    printf("It is integer\n");
if (sscanf(line, "%f", &fval))
    printf("It is float\n");
else
    printf("It isn't an int nor a float; it is a string\n");
顺便说一句,sscanf的秩序决定了一切。从if-else阶梯顶部最具体的格式说明符开始,以最一般的格式说明符结束


如果您想处理有效但结尾有垃圾的输入,则必须使用,这更为复杂。

这取决于程序员如何接受输入!以字符串的形式读取数据,fgets可能-可能,甚至,然后分析字符串。您可以使用sscanf、strtol或strtod等来确定字符串中的内容。你可以用不同的方法分析它,因为你捕获了输入。stdin的输入不是int或float。输入为文本,并进行相应的解释。假设输入为01EFh。这是一个数字,还是一个字符串?你可以看看这个问题,这个问题几乎是重复的,答案应该是正确的。或者,它可以使用%n而不是%c,并检查结尾是否为空字节,以便跳过前导空格和尾随空格。如果整数和浮点都不指向字符串的结尾,那么输入就不是整数或浮点,所以它必须是字符串。这将使用%n一次-它应该使用两次。是,否,可能:如果输入为3.14159个鸡蛋/篮子,则它将报告“它是一个整数”,因为第一个字符是整数;如果允许,它将报告“它是一个浮点”,因为前七个字符是浮点值,但它可能应该报告“它是一个字符串”,因为输入作为一个整体既不是整数也不是浮点。“我同意使用fgets,但分析必须更加细致。”乔纳坦利弗勒,这是一个规范问题,而不是猜测问题。有效输入是什么,必须检查哪些输入,包括错误。3.14159每个篮子的鸡蛋数将指定为[]。