Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Need help transferring my main function code into a separate function

For a school assignment, I am to Create variables in main() that will store the counts and pass pointers to these variables to your functions so that the functions can modify the variables via the pointers. This is a school assignment so rather than someone Give me the answer, I would prefer is someone could help point me in the right direction of using pointers. The Code does work, but not in the way I would like yet.

the code is as follows

void myFunction(int *letters, int *numbers, int *otherCharacters){
}



int main(int argc, char * argv[]) {

// Code for command line argument
    if (argc == 2) {
      int letters = 0;
      int numbers = 0;
      int otherCharacters = 0;
      int totalCharacters;
      int length = strlen(argv[1]);

      for (int i = 0; i < length; ++i){
        if (isalpha(argv[1][i]) != 0)
          ++letters;
        if (isdigit(argv[1][i]) != 0)
          ++numbers;
        if (isdigit(argv[1][i]) == 0 && isalpha(argv[1][i]) == 0)
          ++otherCharacters;
      }
      totalCharacters = letters + numbers + otherCharacters;
      
      printf("%i letters\n%i digits \n%i other characters\n%i characters total\n", letters, numbers, otherCharacters, totalCharacters);
      
    }

I am hoping to rather than change the values of letters, numbers, otherCharacters, and totalCharacters in the main function use pointers to do so in myFunction(). any help on how to use pointers to do so would be much appreciated. Again, I am not asking for an answer, as I would like to complete this assignment myself.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Seems like the function is supposed to look at a string and tell you how many letters, numbers, and other characters there are. It needs to take the counts as pointers, and the string.

void countCharacters(const char *string, int *letters, int *numbers, int *other) {
    ....
}

Because they are pointers, when incrementing them you need to dereference them first to get their values. Instead of letters++ it would be (*letters)++.

And we can replace the main code to show how you’d call this.

int main(int argc, char * argv[]) {
    // Exit early to avoid deeply nesting all the code.
    if (argc != 2) {
        perror("please supply a string");
        return 1;
    }

    int letters = 0;
    int numbers = 0;
    int other = 0;

    // Pass in the string (already a pointer) and the counts as pointers.
    countCharacters(argv[1], &letters, &numbers, &other);
    int total = letters + numbers + other;
      
    printf("%i letters\n%i digits \n%i other characters\n%i characters total\n", letters, numbers, other, total);
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading