Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2017, 09:23   #1
MaryJa
Пользователь
 
Регистрация: 15.10.2017
Сообщений: 12
По умолчанию аналог программы strstr

Скажите,какие в этой программе ошибки?
Программа-аналог функции strstr. Предполагалось сделать так,чтобы после сравнения строк с ограничением количества срав символов(strncmp) в случае совпадения первых символов возвращалось P,в случае несовпадения p указывало на второй символ в первой строке,и сравнение уже шло по первой строке без первого элемента и снова в случае совпадения возвращалось р.
Код:
{
Char*P
Int sz1,sz2;if(str1==NULL)
Return NULL;
Sz1=strlen(str1);
Sz2=strlen(str2);
P=str1;
While(P<=sz1){
If(strncmp(str1,str2,sz2)==0)
Return P;
P++;
}
Return NULL;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 07.11.2017 в 09:42.
MaryJa вне форума Ответить с цитированием
Старый 07.11.2017, 10:17   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

1. язык регистрозависимый, Char и char - это разные вещи
2. вторую строку не проверили на nullptr
3. в качестве кол-ва сравниваемых символов лучше брать минимум из двух размеров
4. зачем вы сравниваете указатель с размером?
p51x вне форума Ответить с цитированием
Старый 07.11.2017, 15:31   #3
MaryJa
Пользователь
 
Регистрация: 15.10.2017
Сообщений: 12
По умолчанию

Спасибо,а если так:
Код:
p=str1;
while(sz1< =0){
if(strncmp(str1,str2,sz2)==0)
return p;
p++;
sz--;
}
MaryJa вне форума Ответить с цитированием
Старый 07.11.2017, 15:57   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

Объясните, что вы хотите сделать циклом?
p51x вне форума Ответить с цитированием
Старый 07.11.2017, 16:12   #5
MaryJa
Пользователь
 
Регистрация: 15.10.2017
Сообщений: 12
По умолчанию

Мне нужен цикл,с помощью которого происходит сравнение,если совпадения есть ,то возвращаем р,если нет-р указывает на втрой символ в первой строке,при этом первый символ в первой строке убирается и сравнение идет уже второй строки с первой,котораябез первого символа и тд
MaryJa вне форума Ответить с цитированием
Старый 07.11.2017, 16:20   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

1. Разбираемся с условие цикла:
раз сравнивается сдвигаемый указатель по первой строке, то по крайней мере надо убедиться, что этот указатель не вышел за границу этой строки - как с этим поможет сравнение размера всей строки с 0?
2. Раз первый символ у вас "убирается", то либо его надо убирать, либо сравнивать с новой позиции, а у вас всегда идет одно и то же сравнение всех строк.
3.
Код:
sz--;
это что? это откуда? это зачем? не дописали 1 или 2?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог программы Windows Type CROWN Помощь студентам 7 18.06.2014 15:08
Написать аналог программы Everest на C++ Builder Серёжа Одиночкин C++ Builder 2 16.12.2013 15:23
Разработка программы, аналог бизнес-органайзера, Delphi. keller47 Фриланс 1 30.05.2013 20:17
Аналог программы... Volt Фриланс 4 06.02.2010 03:18