2013-09-29 31 views
1

我一直在C这个程序上工作,我不明白为什么它打印范围超出参数状态。这里是程序,任何人都可以帮助我吗?另外,我如何获得输入来拒绝不在指定范围内的数字?提前致谢!Ascii转换程序;打印错误

#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

目前尚不清楚你想要做什么。你为什么要求2个号码?如果你只想打印ascii值,你为什么使用for循环?请解释一下。 –

+0

这不会导致你的问题,但在C中应该声明为main(void)。 – pburka

回答

1

你需要清楚地了解什么是这行做:

for(i;j;i++) 

了解更多有关for语句here

for (initialization; condition; increment){ 
     body 
} 

在你的代码,j是你conditionC,zero == falsedifferent from zero is true。因此,j永远不会变为零,因此循环变成无限循环。

试着多解释一下你想用for语句达到什么目的,这样我们可以更好地帮助你。

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); 
    } 

进行验证,只是做一个“如果”的声明,并输入值比较无论你的验证范围会。把它留给你。