Ascii转换计划;打印错误

时间:2013-09-29 21:45:19

标签: c

我一直在用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);
    }

2 个答案:

答案 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 == falsedifferent from zero is true中。因此,j永远不会变为零,因此循环变为无限循环。

尝试用for语句解释一下你想要实现的目标,以便我们更好地帮助你。