gpt4 book ai didi

c中的字符指针

转载 作者:行者123 更新时间:2023-12-04 11:07:59 27 4
gpt4 key购买 nike

我是 C 编程的新手,我无法弄清楚为什么会这样。

char *example(char *temp) {
char *xyz;
memset(xyz,0,strlen(temp));
strncpy(xyz,temp,3);
strcat(xyz,"XX);
return xyz;
}

int main() {
char temp[] = "ABCDEF"
char *xyz;
xyz = example(temp);
printf("Returned string is: %s",xyz);
return 0;
}

我只想知道我做错了什么,因为我尝试运行 GDB,它显示我正在尝试访问内存中某些无法访问的部分,但我无法弄清楚。提前致谢。

最佳答案

问题出在这里:

char *xyz;
memset(xyz,0,strlen(temp));

您从未初始化xyz。因此它是一个无效指针。

你需要为它分配一些东西:

char *xyz = malloc(strlen(temp) + 1);   //  Allocate, +1 is for the '\0'.
memset(xyz,0,strlen(temp));

并在完成后释放它:

int main() {
char temp[] = "ABCDEF"
char *xyz;
xyz = example(temp);
printf("Returned string is: %s",xyz);

free(xyz); // Free

return 0;
}

编辑:其他问题:

这里的这 3 行是非常危险的:

  memset(xyz,0,strlen(temp));
strncpy(xyz,temp,3); // The nul is not copied in strncpy.
xyz[3] = '\0'; // Add the nul manually.
strcat(xyz,"XX"); // You need to ensure that xyz is large enough.

关于c中的字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145924/

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