我有这个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。感谢那些从早期问题中帮助我解决这个问题的人:)
答案 0 :(得分:3)
您需要先设置conv
,例如:
long conv = ~0;
只要它在一台机器上完美运行而在另一台机器上完全没有运行,你就会很幸运。 conv
确实有价值,即使您没有明确设置它。在一台机器上,它是0
,另一台机器是0
以外的其他东西,因此行为不同。
另一种方法是使用do while
循环:
do
{
...
}
while(conv != 0);
答案 1 :(得分:3)
您的程序未定义conv的值,因此&#34; while&#34;循环立即退出。尝试将其设置为某个非零值。