views:

289

answers:

3

I'm trying to check whether or not the second argument in my program is a substring of the first argument. The problem is that it only work if the substring starts with the same letter of the string.

EDIT: It must be done in C, not C++. Sorry

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

    if (argc != 3) {
        printf ("Usage: check <string one> <string two>\n");
    }

    int result = my_strstr(argv[1], argv[2]);

    if(result == 1){
        printf("%s is a substring of %s\n", argv[2], argv[1]);
    }
    else{
        printf("%s is not a substring of %s\n", argv[2], argv[1]);
    }
    return 0;
}
+1  A: 

Your algorithm isn't correct.

What you want is nested loops. Loop over the length of str, then loop over the length of sub to see if there is a match starting at that position.

Grumdrig
+2  A: 

I am assuming homework, so: Take a look at what subStart is initialized with.

Georg Fritzsche
+1  A: 

Your analysis of the problem ("it only work if the substring starts with the same letter of the string") is incorrect and so you are looking for the wrong problem. Since this appears to be homework, I'll just hint at the underlying problem.

While it fails with Michigan and igan it will correctly work with Michigan and higan.

Why does it work for higan and not igan? What is the first letter of igan? What is different about that when it comes to Michigan?

R Samuel Klatchko