C:修复程序故障

时间:2013-09-05 22:55:00

标签: c for-loop conditional-statements

我一直在努力弄清楚我的代码出现了几乎几个小时的错误,但我似乎无法找到它。我的代码正在编译,它告诉我没有违反编译器的错误,但是我的程序没有按照我想要的方式工作。

我的代码是:

#include <stdio.h>
#define MAXNUM 3
#define MAXLEN 9

int main ()
{
        char input[MAXNUM][MAXLEN];
        int count;
        int a = 0;
    for ( count = 0; (count + 1) < MAXNUM; count++ ) { 
    printf ( "Enter number: (12XXXXXXX): " );
        if ((fgets ( input[count], sizeof(input), stdin )) != 0 ) {
            a = atoi (input[count]);
            if ((( a / 10000000 ) >= 13 ) || (( a / 10000000 ) <= 11 )) {
            //error message
            }
        } else {
            //error message
        }
    } 
    return 0;

}

该程序应该采取三个输入,但它需要四个,然后致命终止。它的其他功能正常工作(处理错误的输入等),唯一的问题似乎是应该询问用户输入的次数。我认为错误是在我的for循环条件下,我一直试图弄明白,但无济于事。有人能指出来吗?

* 好的我已经把它弄清楚了。它处于for循环条件:* (count + 1) <= MAXNUM

1 个答案:

答案 0 :(得分:0)

for()循环经常迭代1。所以而不是

for ( count = 0; (count + 1) < MAXNUM; count++ ) {

替换为

for ( count = 0; count < MAXNUM; count++ ) {

我注意到OP用自己的解决方案编辑了这个问题:

(count + 1) <= MAXNUM;

这几乎相当。如果count + 1处理溢出,它在select编译器上的区别就不同了。推荐惯用的count < MAXNUM解决方案。