这是我们大学小组作业的一小部分。我们必须展示我们的代码,并解释代码的每个部分是如何工作的。
我们想要确保用户输入一个整数,如果他们没有输入一个有效的数字,则提示用户重新输入。
我们设法想出了一个解决方案,但我不明白为什么它有效。
在试图想出一个解决方案时,我们考虑使用
numberchecker==input[i]
if(!(numberchecker==input[i]))
然而,它与我们想要的相反,所以我删除了' !"现在它不知怎么地起作用了?"为什么会发生这种情况?if语句不应该只在输入整数时才触发吗?
#include <stdio.h>
int main()
{
int i,x,input[128],answer,numberchecker;
printf("Input number of numbers: ");
scanf("%d",&x);
for(i=0;i<x;i++)
{
printf("Input number %d:",i+1);
scanf("%d",&input[i]);
numberchecker==input[i];
if(numberchecker==input[i])
{
do
{
printf("nInvalid number! Please try to input a valid numbernnInput number %d:",i+1);
scanf("%d",&input[i]);
numberchecker==input[i];
}
while(numberchecker==input[i]);
}
}
}
然而,它与我们想要的相反,所以我删除了' !"现在它不知怎么地起作用了?">
它不是可靠的工作,而是依赖于未定义的行为。
为什么会发生这种情况?
这是未定义行为。
if语句不应该只在输入整数时触发吗?
。是未定义行为。
使用fgets()
读取用户输入的行,strtol()
根据如何解析它。