Solved

a newcomer to c programming needs help again

Posted on 2004-04-05
3
268 Views
Last Modified: 2010-04-17
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?
0
Comment
Question by:ico2
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 1

Expert Comment

by:llewelm
ID: 10760236
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...
0
 
LVL 4

Accepted Solution

by:
PerryDK earned 20 total points
ID: 10760573
Output of program ran with c.exe 1 2 3 -5 -10 20 15 8

ptrValues[0] = 1
ptrValues[1] = 2
ptrValues[2] = 3
ptrValues[3] = -5
ptrValues[4] = -10
ptrValues[5] = 20
ptrValues[6] = 15
ptrValues[7] = 8

The Sum of the numbers is 34

Actual program:

#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 = new int[numValues];
  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);

  delete[] ptrValues;

  return 0;
}


By the way are using strictly the C language or are you using C++.  If your using strictly the C language which I'm not sure why you wouldn't be using C++ but if you are write me back and I can change the code to work with strictly C.  Basically the allocation and deallocation of the ptrValues array will differ.  You'll have to use malloc and stuff like that which you don't have to use in C++.
0
 
LVL 4

Expert Comment

by:PerryDK
ID: 10760608
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;
}

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Delphi: barcode reading on android platform 1 74
object oriented design (python) and documentation tools 2 102
ASP/VB email question 4 62
Java array 10 63
Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question