Home > Blockchain >  Counting occurences of character in string from command line
Counting occurences of character in string from command line

Time:10-16

I have a program written in C that should count the occurrences of a character "c" in a string "s". My problem is that I am getting the error "warning: comparison between pointer and integer if(s[i]==c)"

I'm new to C and am struggling to figure out how to fix my program.

Thanks

#include <stdio.h>
#include <stdlib.h>

int countOccur(char *c, char *s);

int main(int argc, char *argv[])
{
    int count=0;
    char* c = argv[1];
    char* s = argv[2];

    count=countOccur(c, s);

    printf("%d", count);

    return 0;
}

int countOccur(char *c, char *s)
{
    int i, count=0;

    for(i=0;s[i];i  )  
    {
        if(s[i]==c)
        {
          count  ;
        }
    }

    return count;
}

CodePudding user response:

You want to check that the program was called the way you expect, or help the user correct the mistake (the user is you next week when you forgot). As you count the frequency of a single letter, you want to use char instead of char * for that. I used size_t instead of int as the both the i and count are non-negative. Also minimized the scope of size_t i by moving the definition inside the loop):

#include <stdio.h>
#include <stdlib.h>

size_t countOccur(char c, char *s) {
    size_t count = 0;
    for(size_t i = 0; s[i]; i  ) {
        if(c == s[i]) {
            count  ;
        }
    }
    return count;
}

int main(int argc, char *argv[]) {
    if(argc != 3) {
        printf("usage: %s letter string\n", *argv);
        return 0;
    }
    printf("%zu\n", countOccur(argv[1][0], argv[2]));
}
  •  Tags:  
  • c
  • Related