2010-05-11 254 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用什麼來初始化。