gpt4 book ai didi

使用指针将数组复制到数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:33 24 4
gpt4 key购买 nike

就像下面的一个问题,我必须使用指针概念在 mystrcpy2 函数中将数组从一个复制到另一个,这与不使用指针概念的 mystrcpy 函数不同。不管怎样,我输入了我的答案,“dest = src;”这似乎过于简单但对我来说是正确的答案。但是当我输入“Hello World”之类的输入时,它显示为“Hello World ???”就像后面的奇怪字母。但是当我输入像“abc”这样的短词时,结果恰好是“abc”。是电脑问题还是我做错了什么?

我也想知道“while (*src) *dest++=*src++;”是否也有效?

/*完成mystrcpy2()函数,将src指向的空终止字符串复制到dest指向的字符串。mystrcpy2() 应该给出与使用基于索引的数组遍历方法的 mystrcpy() 相同的结果。请注意,在实现 mystrcpy2() 时不允许添加局部变量。编写并提交“mystrcpy2()”函数的源代码。*/

#include <stdio.h>
void mystrcpy(char dest[], char src[])
{
int i=0,j=0;
while (src[i])
dest[j++] = src[i++];
}
void mystrcpy2(char *dest, char *src)
{
dest = src;
}

int main(void)
{
char mystr1[256];
char mystr2[256];

gets(mystr1);

mystrcpy(mystr2, mystr1);
puts(mystr2);

mystrcpy2(mystr2, mystr1);
puts(mystr2);
return 0;
}

最佳答案

您对 mystrcpy2 的实现不会复制任何内容。事实上,它什么都不做。当您执行 dest = src 时,您复制的是 src 变量指向的内存位置,而不是该位置的数据。要实际复制数据,您需要使用“*”来引用指针。所以你会做

*dest = *src;

这会将数据从 src 复制到 dest。但它只复制一个字符。您需要增加 srcdest 然后再次执行此操作以复制下一个字符,并且您需要继续这样做直到您击中字符串终止符即直到 *源代码 == 0。这是完整的实现。

void mystrcpy2(char *dest, char *src)
{
while (*src != 0) {
*dest = *src;
dest++;
src++;
}
// don't forget to add a terminator
// to the copied string
*dest = 0;
}

这是一个更短版本的完全相同的东西。

void mystrcpy2(char *dest, char *src)
{
while (*(dest++) = *(src++));
}

关于使用指针将数组复制到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47265011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com