C程序可以在我的Ubuntu VM终端上运行,但不能在学校的Linux服务器上运行?

时间:2015-04-05 04:49:12

标签: c++ c linux linux-kernel

我有这个C程序在我的Ubuntu虚拟机上完美运行但在学校Linux服务器上根本没有运行(不会提示用户输入,只是完成)。

School Linux版:Linux 2.6.18-371.9.1.e15 x86_64

我的Ubuntu VM版本:Linux 3.16.0-33-generic x86_64

以下是该计划:

 #include <stdio.h>
 #include <string.h>
 int main()
 {
    char value[50];
    char *end;
    int sum = 0;
    long conv;
    while(conv != 0 )
    {
            printf("Enter a measurement and unit(Ex: 4' or 3\";0' or 0\" when done): ");
            fgets(value, 50, stdin);
            conv = strtol(value, &end, 10);
            if(strstr(value, "\'") != NULL)
            {
                    conv = strtol(value, &end, 10);
                    sum = sum + (conv*12);
            }
            else if(strstr(value, "\"") != NULL)
            {
                    conv = strtol(value, &end, 10);
                    sum = sum + conv;
            }
    }
    printf("Total: %d, %s\n", sum, "inches" );
    return 0;
 }

知道为什么这是??

P.S。感谢那些从早期问题中帮助我解决这个问题的人:)

2 个答案:

答案 0 :(得分:3)

您需要先设置conv,例如:

long conv = ~0;

只要它在一台机器上完美运行而在另一台机器上完全没有运行,你就会很幸运。 conv确实有价值,即使您没有明确设置它。在一台机器上,它是0,另一台机器是0以外的其他东西,因此行为不同。

另一种方法是使用do while循环:

do
{
    ...
}
while(conv != 0);

答案 1 :(得分:3)

您的程序未定义conv的值,因此&#34; while&#34;循环立即退出。尝试将其设置为某个非零值。