[英]strcopy function using pointers not working
我需要制作一個函數,該函數接收兩個char指針並將一個指針的內容復制到另一個指針中,然后返回指針的開頭。 我已經弄混了幾個小時,並且已經閱讀了100個完全不同的示例。 這是我現在所擁有的:
char * mystrcpy(char * dest, char * src) {
while(1) {
if(*src == '\0') {
*dest = '\0';
return dest;
}
else {
*dest = *src;
*src++;
*dest++;
}
}
您想要的是增加指針,而實際上增加它們指向的字符。
更改
*src++;
*dest++;
至:
src++;
dest++;
dest++;
dest
是一個指針,您正在移動它以便從src
復制值。因此,當您返回dest
它已經指向字符串的末尾。
因此,不要移動該指針,而只是使用索引將值復制到該指針。
int i=0;
while( *src)
{
dest[i] = *src;
i++;
src++;
}
dest[i] = '\0';
return dest;
因此,即使將*dest++
修復為dest++
,返回的內容也不會得到預期的結果。
這兩行:
*src++;
*dest++;
應該:
src++;
dest++;
注意,沒有取消對指針的引用,因為代碼需要增加指針,而不是指針指向的對象。
保存dest的初始值是一個好主意,以便可以將其返回。 為了避免丟失dest緩沖區中已有的任何字符串,我懷疑dest的值(保存后)需要增加dest + = strlen(dest);
因此發生了兩個字符串的集中,而不是在dest中覆蓋初始字符串。
在調用該函數之前,應檢查dest緩沖區的長度足以容納兩個字符串+1的strlen()。
+1是允許終止字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.