OriginalGriff
Начните с отступа вашего кода: это значительно облегчит его чтение.
И пока вы учитесь, по крайней мере, никогда не пишите ни одной строки в виде цикла или условия - всегда используйте фигурные скобки. Это может показаться большой работой, но это делает thigns намного более очевидным, когда вы меняете его или получаете проблему.
Так что меняйся
while(*cp!='\0')
cp++;
К
while(*cp!='\0')
{
cp++;
}
И так далее. Поверь мне, оно того стоит!
Затем посмотрите на свой код - и это было бы действительно очевидно, если бы вы запустили его через отладчик, - и совершенно ясно, что здесь есть проблемы.
Вы заметили, что начинаете с первого символа вашей строки:
ch=*str1;
А затем проверьте, есть ли он в строке:
cp=match(ch,str);
Так оно и есть, потому что вы только что получили его оттуда. Тогда вы дважды проверьте это:
if(*cp==ch)
что всегда будет правдой!
Но чего вы еще не заметили, так это того, что ваш метод соответствия действительно отвратителен:
char*match(char c,char*s)
{
while(c!=*s)
s++;
return (s);
}
Что произойдет, если строка не содержит символа?
И не только это, но:
while(*cp!='\0')
cp++;
printf("%c",*cp);
И ничего не собирается печатать. Никогда!
Разбейте отладчик и начните шагать через свой код: это навык, который вам нужно освоить, и его лучше всего изучать на простых примерах кода, подобных этому.
OriginalGriff
Нет! Это ваша домашняя работа, и ее исправление-часть задачи. Если бы я просто дал вам полное решение, то на следующей неделе домашнее задание вам было бы еще труднее сделать.
Так что приготовьтесь к отладчику и начните смотреть, что не так.
Все, что вам нужно сделать, это подумать о том, что вы пытаетесь сделать, и сравнить это с тем, что происходит на самом деле.
OriginalGriff
Не просите решения - исправьте то, что у вас есть.
Если вы не исправите это сами, то вы не узнаете часть задачи: как найти проблемы и исправить их! И поверьте мне, сделать это на таком тривиальном фрагменте кода, как этот, намного проще, чем пытаться сделать это на следующей неделе с более крупной задачей, или на следующей неделе с гораздо более крупной задачей, или ...
Вы получаете картину.
Начните смотреть на код, используйте отладчик и подумайте о том, что я вам сказал.
Вы можете сделать это - но только если вы приложите к этому свой ум, а не будете пытаться заставить других сделать это за вас.