ico2
asked on
a newcomer to c programming needs help again
i have once again come to a dead end with my logon program in c.
whatever value is given to my program it outputs the results for 2.
i have created a simpler program that produces the same error:
#include stdio
int main(int val1)
{
if(val1==1)
{
printf("1");
}
if(val1==2)
{
printf("2");
}
if(val1==3)
{
printf("3");
}
if(val1==4)
{
printf("4");
}
}
it is probably just me being stupid but can anyone explain this?
whatever value is given to my program it outputs the results for 2.
i have created a simpler program that produces the same error:
#include stdio
int main(int val1)
{
if(val1==1)
{
printf("1");
}
if(val1==2)
{
printf("2");
}
if(val1==3)
{
printf("3");
}
if(val1==4)
{
printf("4");
}
}
it is probably just me being stupid but can anyone explain this?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Heres the program written strictly in C code if you need it.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
if(argc < 2)
{
printf("improper usage. Please pass some integer values to this program");
//return -1 indicating failure
return -1;
}
int numValues = argc -1;
int* ptrValues = (int*)malloc(numValues * sizeof(int));
for(int i = 0; i < numValues; i++)
{
//convert the paramters passed in to integers and store
//them in our array for later usage
//Note that if the string can not be converted to an integer
//the value stored will be 0
ptrValues[i] = atoi(argv[i+1]);
}
//lets enumerate through all the values displaying them to the user
//and lets add them up just for fun
int sum = 0;
for(int i = 0; i < numValues; i++)
{
printf("ptrValues[%i] = %i \n", i, ptrValues[i]);
sum += ptrValues[i];
}
printf("\nThe Sum of the numbers is %i", sum);
free(ptrValues);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
if(argc < 2)
{
printf("improper usage. Please pass some integer values to this program");
//return -1 indicating failure
return -1;
}
int numValues = argc -1;
int* ptrValues = (int*)malloc(numValues * sizeof(int));
for(int i = 0; i < numValues; i++)
{
//convert the paramters passed in to integers and store
//them in our array for later usage
//Note that if the string can not be converted to an integer
//the value stored will be 0
ptrValues[i] = atoi(argv[i+1]);
}
//lets enumerate through all the values displaying them to the user
//and lets add them up just for fun
int sum = 0;
for(int i = 0; i < numValues; i++)
{
printf("ptrValues[%i] = %i \n", i, ptrValues[i]);
sum += ptrValues[i];
}
printf("\nThe Sum of the numbers is %i", sum);
free(ptrValues);
return 0;
}
int main(int argc, char *argv[])
The first parameter is the number of command line arguments, the second are the actual arguments. My guess is that you've compiled your program and have a c.exe or something similar and your typing
c 1
and "2" is coming out. That is correct because your program has two command line arguments -- "c" and "1".
Your program should look more like:
#include <stdio.h>
int main(int argc, char *argv[])
{
if (strcmp(argv[1], "1") == 0) {
printf("1");
}
if (strcmp(argv[1], "2") == 0) {
printf("2");
}
etc...