2015-11-20 75 views
0

我必须写一个替代strcpy而不使用指针或具有返回值的函数... 这怎么办?写替代strcpy

这是我迄今为止,但它使用返回值。

void str_copy(char destination [], char source []) { 
    int i; 
    for (i = 0; source[i] != '\0'; ++i) 
     destination[i] = source[i]; 
    destination[i] = '\0'; 
    return destination; 
} 
+0

不使用指针?不可能。在你的例子中,'destination'和'source'被调整为指针。 – ouah

+0

在C中,数组衰减为指针。请参阅:http://c-faq.com/aryptr/aryptrparam.html – ViniciusArruda

+0

如果对您有用,您可以使用'memcpy(目标,源,strlen(源)* sizeof(char))' – ViniciusArruda

回答

1

建议写入功能是这样的:

void str_copy(char destination [], const char source []) 
{ 
    for(size_t i=0; source[i]; i++) destination[i] = source[i]; 
    destination[i] = '\0'; 
} 
1

为什么你必须返回目的地?由于您使用空括号传递了第一个元素的地址,因此应该更改目标数组而不返回。

4

只要删除return语句即可。

功能可以看看下面的方式

void str_copy(char destination [], const char source []) { 
    size_t i = 0; 
    while (destination[i] = source[i]) i++; 
} 
+1

@iharob我认为这个要求是不正确的理解。 –

+0

轻微:'int i' - >'size_t i'。 – chux

+0

任务总是'真',所以这将导致'永远'循环 – user3629249