gpt4 book ai didi

c - strcat() 输出的解释

转载 作者:行者123 更新时间:2023-11-30 21:14:14 24 4
gpt4 key购买 nike

这是 295c 的问题之一

#include<stdio.h>   
#include<string.h>
main()
{
char *a="kammo DJ";
const char *b="roomies!!";
char *c;
a=(char *)malloc(strlen(a) + strlen(b));
c=(char *)malloc(strlen(a) + strlen(b));
c=strcat(a,b);
printf("%s\n",a);
}

输出是 - roomies!!但为什么输出应该是 kammo DJ + roomies 的串联!!还告诉c的值是多少?

最佳答案

首先,您应该malloc strlen(a) + strlen(b) + 1,因为'\0 ' 符号。您已经声明了 char * a = "kammo dj" 因此您无法为其分配内存。当您对 char * a 执行 malloc 时,它返回创建的内存池 malloc 的位置。如果你这样做:

#include<stdio.h>   
#include<string.h>
#include<malloc.h>

int main()
{
const char *a="kammo DJ";
const char *b="roomies!!";
char *c;
size_t len = strlen(a) + strlen(b) + 1;
c=(char *)malloc(len*sizeof(char));
strcpy(c,a);
strcat(c,b);
printf("%s\n",c);
// don't forget!
free(c);
return 0;

}

将输出'kammo DJroomies(之间没有空格)

关于c - strcat() 输出的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395797/

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