编译困境(代码块和ubuntu)

时间:2016-04-10 04:56:33

标签: c ubuntu compilation ubuntu-14.04 codeblocks

我正在研究这个项目,经过一周的编码后,我终于完成了它。我使用Code :: Blocks创建了程序(编译它)(我只使用Windows 7)。它完美运行。

但是,如果我将相同的c文件传输到虚拟机(ubuntu),当我编译它时,没有错误,但程序运行的方式是不同的。

在我的程序中,有许多输入限制功能。在我的虚拟框中,我似乎无法通过第一个限制。我还没有发现我是否能够通过下一个限制。

例如:

    while(1){
    printf("Enter the number of rows:");
    fgets(rows, 100, stdin);
    string_clean(rows); // '\n' to '\0'
    c=numstring_check(rows, strlen(rows));


    if(c==0){
        printf("INVALID!\n");
    }else if(c!=0){
        rows_i=strtol(rows, &remain, 10);
        if ((rows_i>10 || rows_i<1)){
            printf("INVALID!\n");
            continue;
        }else
            break;
    }
    }

numstring函数是:

int numstring_check (char array[], int size) {
int i,j,flag=0;
for (i=0; i<size; i++){
    j=isdigit(array[i]);
    if(j!=1){
        flag=1;
        break;
    }
}
if (flag==1)
    return 0;
}

这只是一个问题。我的困境是,我有多个功能贯穿这个功能,这不是我唯一的输入检查器。

如果这段代码是通过代码块运行的,那么它可以正常工作,但是在ubuntu上,无论我编码什么输入,它都会打印“无效”。我需要认真的帮助。

1 个答案:

答案 0 :(得分:0)

函数:isdigit()在参数为数字时返回NON_ZERO。

这并不意味着它会返回1.建议使用:

if( !j ) 

作为非数字的测试。更好的计划是消除j,以便将对isdigit()if()的调用合并为:

if( !isdigit(array[i]) )