
06.07.2019, 21:56
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами:
5447649
Репутация:
28
|
|
[QUOTE="ishi"]
Обновляю запрос.
В yo была утечка, исправив слепил это:
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
+
1
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
C++:
Код:
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
+
1
;
+ 1 не нужен, так ты будешь получать указатель на конец строки + 1, а это не только может приводить к неправильному результату функции, но и изменять данные в чужой выделенной памяти и приводить к сбою программы
C++:
[CODE]
while
(
iterator
Тут должен быть оператор
C++:
[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast
(
temp
)
+
strlen
(
what
)
;
char
*
tempptr
=
static_cast
(
where_
)
;
while
(
iterator
И вообще, можно было бы реализовать функцию и без промежуточного буфера temp, не знаю зачем ты это сделал.
Или вовсе использовать strstr, раз уже используешь strcmp.
C++:
[CODE]
int
findstring
(
const
char
*
str1
,
const
char
*
str2
)
{
int
str1_len
=
strlen
(
str1
)
;
int
str2_len
=
strlen
(
str2
)
;
for
(
int
i
=
0
;
i
|
|
|