Reputation: 319
I have this C program that runs perfectly on my Ubuntu Virtual Machine but does not run at all(doesn't prompt user for input, just finishes) on the school Linux server.
School Linux version: Linux 2.6.18-371.9.1.e15 x86_64
My Ubuntu VM version: Linux 3.16.0-33-generic x86_64
Here is the program:
#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;
}
Any idea why this is??
P.S. thanks to those who helped me with this program from an earlier question :)
Upvotes: 0
Views: 134
Reputation: 201
The value of conv is undefined by your program, so the "while" loop exits immediately. Try setting it to some nonzero value.
Upvotes: 3
Reputation: 8861
You need to initially set conv
, for example:
long conv = ~0;
As far as it running perfectly on one machine and not at all on another, you just got lucky. conv
does have a value, even if you don't explicitly set it. On one machine, it was 0
and on the other it was something other than 0
, hence the different behavior.
Another method would be to use a do while
loop:
do
{
...
}
while(conv != 0);
Upvotes: 3