gpt4 book ai didi

c++ - 程序崩溃,指针试图使 strcpy 类似

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:51 24 4
gpt4 key购买 nike

这是我今天的第二个问题,指针让我做噩梦。我正在尝试制作一个程序来做与 strcpy() 函数相同的事情..一旦我尝试了它……它就崩溃了,我 100% 确定这是我的代码中的一个指针问题。我想是因为有某种未初始化的指针(*复制)..但是我已经为它分配了 NULL ...所以任何人都可以告诉我 Null 分配的确切用途是什么?因为我想我误解了它的用途。并请告诉我可以对程序进行哪些更正才能正常运行。

 #include <iostream>
using namespace std;

void mycpy(char *b , char *a);

int main()
{

char *original = "this is a text" ;
char *copied = 0 ;

mycpy(copied , original);

for(int i = 0 ; *(copied+i) ;i++) cout << *(copied+i) ;

return 0;
}

void mycpy(char *b , char *a){

for(int i = 0 ; *(a+i) ; i++) *(b+i) = *(a+i);

}

提前致谢。

最佳答案

嗯,你的 mycpy 几乎是正确的(尽管你可以使用括号而不是算术,即 a[i] 而不是 *(a+ 1))。为了正确打印复制的字符串,最后一个字符必须为零,但最后一个字符被您的函数复制。所以它应该像

void mycpy(char *b , char *a)
{
int i;
for(i = 0 ; *(a+i) ; i++) *(b+i) = *(a+i);
*(b+i) = 0; // or "\0", doesn't matter
}

进一步的变量

char *copied = 0 ;

没有指向有效的内存,所以你从内存位置 0 读取,这是非法的。您可以将变量定义为数组

char copied[20];

关于c++ - 程序崩溃,指针试图使 strcpy 类似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254645/

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