我一直在用C编写这个程序,我不明白为什么打印超出参数状态的范围。这是程序,任何人都可以帮助我吗?另外,如何获取输入以拒绝不在指定范围内的数字?提前谢谢!
#include <stdlib.h>
#include <stdio.h>
#define LEN 64
int main(){
char line[LEN];
printf("Enter a #, 32-127: ");
fgets(line,LEN,stdin);
int i = atoi(line);
printf("Enter a #, %d-127: ",i);
fgets(line,LEN,stdin);
int j = atoi(line);
for(i;j;i++)
printf("ASCII value of character %d: %c\n",i,i);
return(EXIT_SUCCESS);
}
答案 0 :(得分:1)
您的“for”循环不正确。相反,尝试类似:
while ( i <= j ) {
printf("ASCII value of character %d: %c\n",i,i);
i++;
}
或
for ( int idx = i; idx <=j; idx++) {
printf("ASCII value of character %d: %c\n",idx,idx);
}
对于验证,只需执行“if”语句,并将输入值与您的验证范围进行比较。留给你。
答案 1 :(得分:1)
你需要清楚地了解这条线的作用:
for(i;j;i++)
详细了解for-statement here
for (initialization; condition; increment){
body
}
在您的代码中,j
是您的condition
。在 C ,zero == false
和different from zero is true
中。因此,j
永远不会变为零,因此循环变为无限循环。
尝试用for语句解释一下你想要实现的目标,以便我们更好地帮助你。