2015-11-20 77 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