我需要編寫一個程序,該程序以兩個字符串作爲參數,並檢查第二個字符串是否是第一個字符串的子字符串。我需要這樣做,而不使用任何特殊的庫函數。我創建了這個實現,但是我認爲只要兩個字符串中有一個字母是相同的,就總是返回true。你能幫我在這裏嗎?我不知道我在做什麼錯:C - 檢查字符串是否是另一個字符串的子字符串
#include <stdio.h>
#include <string.h>
int my_strstr(char const *s, char const *sub) {
char const *ret = sub;
int r = 0;
while (ret = strchr(ret, *sub)) {
if (strcmp(++ret, sub+1) == 0){
r = 1;
}
else{
r = 0;
}
}
return r;
}
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;
}
如果您「需要不使用任何特殊的庫函數」,那麼您不應該使用strchr和strcmp。其實strcmp是你的問題無論如何。 – stmax 2010-04-12 18:50:19
@stmax:這些只是_ordinary_庫函數。沒有什麼特別的:) – 2010-04-12 18:54:47
@Daniel:如果'strchr()'和'strcmp()'是普通的,那麼'strstr()'... – 2010-04-12 21:03:40