Показать сообщение отдельно

  #3  
Старый 06.07.2019, 21:56
_Vine_
Участник форума
Регистрация: 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

 
Ответить с цитированием