Объявление функции должно выглядеть так
char * functionstrcpy( char *str1, const char *str2 );
Поскольку вы уже используете стандартную функцию C strlen
, то почему бы не использовать другую строковую функцию strcpy
? В этом случае функция может быть просто оболочкой для функции strcpy
без каких-либо дополнительных функций.
char * functionstrcpy( char *str1, const char *str2 )
{
return strcpy( str1, str2 );
}
Если вы хотите написать функцию самостоятельно, не используя стандартную функцию C strcpy
, то ее определение может выглядеть так:
char * functionstrcpy( char *str1, const char *str2 )
{
for ( char *p = str1; ( *p++ = *str2++ ); );
return str1;
}
Вы можете использовать возвращаемый указатель при вызове printf
, например
printf("address: %p \n", (void*)functionstrcpy(str1,str2));
потому что вы просто выводите значение действительного указателя.
person
Vlad from Moscow
schedule
18.04.2020
int length2 = strlen(str2); for(i = 0; i < length2; i ++ )
сбегаетstr2
дважды.for(i = 0; str2[i]; i ++ )
только один раз. Оба правильно, второй скорее всего быстрее. - person chux - Reinstate Monica   schedule 18.04.2020