Link to home
Start Free TrialLog in
Avatar of ico2
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?
Avatar of llewelm
llewelm

The main() function takes two parameters as follows:

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...
ASKER CERTIFIED SOLUTION
Avatar of PerryDK
PerryDK

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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;
}