Мне нужно написать программу, которая принимает две строки в качестве аргументов и проверяет, является ли вторая подстрокой первой. Мне нужно сделать это без использования каких-либо специальных функций библиотеки. Я создал эту реализацию, но я думаю, что она всегда возвращает 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
@stmax: Это просто функции _ordinary_ library. В них нет ничего особенного :) –
@ Daniel: если 'strchr()' и 'strcmp()' являются обычными, то есть 'strstr()' ... –