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

C program works on my Ubuntu VM terminal but not on school Linux server?

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

学校Linux版本:Linux2.6.18-371.9.1.e15x86_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。感谢那些在之前的问题中帮助我完成这个程序的人:)

需要初始设置conv,例如:

long conv = ~0;

就它 运行 在一台机器上完美而在另一台机器上完全不完美而言,你只是走运。 conv 确实有一个值,即使您没有明确设置它。在一台机器上,它是 0 而在另一台机器上它不是 0,因此行为不同。

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

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

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