编写 strcpy 的替代品
Writing replacement for strcpy
我必须在不使用指针或具有 return 值的函数的情况下编写 strcpy 的替代品...
这怎么可能?!
这是我目前所拥有的,但它使用了 return 个值。
void str_copy(char destination [], char source []) {
int i;
for (i = 0; source[i] != '[=10=]'; ++i)
destination[i] = source[i];
destination[i] = '[=10=]';
return destination;
}
为什么要return目的地?由于您使用空括号传递了第一个元素的地址,因此应该在不使用 return 的情况下更改目标数组。
只需删除 return 语句。
函数可以如下所示
void str_copy( char destination [], const char source [] ) {
size_t i = 0;
while ( destination[i] = source[i] ) i++;
}
建议这样写函数:
void str_copy( char destination [], const char source [] )
{
for(size_t i=0; source[i]; i++ ) destination[i] = source[i];
destination[i] = '[=10=]';
}
我必须在不使用指针或具有 return 值的函数的情况下编写 strcpy 的替代品... 这怎么可能?!
这是我目前所拥有的,但它使用了 return 个值。
void str_copy(char destination [], char source []) {
int i;
for (i = 0; source[i] != '[=10=]'; ++i)
destination[i] = source[i];
destination[i] = '[=10=]';
return destination;
}
为什么要return目的地?由于您使用空括号传递了第一个元素的地址,因此应该在不使用 return 的情况下更改目标数组。
只需删除 return 语句。
函数可以如下所示
void str_copy( char destination [], const char source [] ) {
size_t i = 0;
while ( destination[i] = source[i] ) i++;
}
建议这样写函数:
void str_copy( char destination [], const char source [] )
{
for(size_t i=0; source[i]; i++ ) destination[i] = source[i];
destination[i] = '[=10=]';
}