用户只能输入一次输入,输出应根据输入打印。
答案 0 :(得分:0)
使用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
阶梯顶部的最具体的格式说明符开始,以最常规的结尾。
如果你想处理有效的输入,但最后有垃圾,你将不得不使用更复杂的strtol
。