2010-05-11 183 views
2

我试图检查我的程序中的第二个参数是否是第一个参数的子字符串。问题是只有子字符串以字符串的相同字母开头时才起作用。检查字符串的子字符串

编辑:它必须在C中完成,而不是C++。

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; 
} 
+0

我猜这是作业吗? – 2010-05-11 20:43:56

+0

...具体而言,禁止使用'at'之外的任何库函数的作业? – Potatoswatter 2010-05-11 20:48:51

+2

将字符串传递给函数时,使用'const string&'。 – Stephen 2010-05-11 20:50:50

回答

1

你对问题的分析(“只有当子字符串以字符串的同一个字母开始时才有效)”不正确,所以你正在寻找错误的问题。由于这看起来是功课,所以我只会暗示潜在的问题。

虽然它与Michiganigan失败它将正确使用Michiganhigan

它为什么在higan而不是iganigan的第一个字母是什么?当涉及到Michigan时,有什么不同?

1

您的算法不正确。

你想要的是嵌套循环。遍历str的长度,然后遍历sub的长度以查看是否存在从该位置开始的匹配。

2

我假设功课,所以:看看subStart用什么来初始化。