我需要编写一个程序,该程序以两个字符串作为参数,并检查第二个字符串是否是第一个字符串的子字符串。我需要这样做,而不使用任何特殊的库函数。我创建了这个实现,但是我认为只要两个字符串中有一个字母是相同的,就总是返回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