C:修复程序故障

标签 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

最佳答案

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

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

替换为

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

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

(count + 1) <= MAXNUM;

这几乎是等价的。它在处理 count + 1 的选择编译器上有所不同。它应该溢出吗?推荐地道的count < MAXNUM解决方案。

关于C:修复程序故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647239/

相关文章:

shell - 为什么在批处理程序的 FOR 循环中创建了一个额外的文件?

创建一个包含 100 个节点的链表,每个节点包含一个随机数 C

javascript - if 循环 JavaScript 的原型(prototype)库

javascript - Angular2 条件表单验证器

c++ - 转义 printf() 中的所有特殊字符

c - 如果使用 fork()-C 的代码,进程树会是什么样子

php - 如何在插入表之前检查表中是否存在值?

r - 想要删除重复的行,除非列中存在 NA 值

c - 当我尝试将变量的地址分配给声明为指向不同类型的变量的指针时,为什么会收到警告?

C TCP 套接字 : read () on socket returns Resourse temporarily unavailable