编译困境(代码块和ubuntu)

标签 c ubuntu compilation ubuntu-14.04 codeblocks

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

但是,如果我将同一个c文件传输到virtualbox(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 上,它只打印“无效”,无论我编码什么输入。我需要认真的帮助。

最佳答案

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

这并不意味着它将返回 1。建议使用:

if( !j ) 

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

if( !isdigit(array[i]) )

关于编译困境(代码块和ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525955/

相关文章:

c - 指针问题未解决

c - 将2个数组合并到C中的空第三个数组中

android - Ubuntu 13.04 上的 Genymotion 无法连接到虚拟设备

Ubuntu 上的 Matlab VideoReader,quicktime 编解码器

Ubuntu、opencv 和链接

c - 修改linux内核后编译速度慢

c# - native C 字符串列表对 C# 的弱引用

c - 发现理解 C 中指针的困难

android - 如何在新平台上编译/构建 android aapt?

C++ 编译 : what did i do wrong