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" 循环立即退出。尝试将其设置为某个非零值。
我有这个 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" 循环立即退出。尝试将其设置为某个非零值。