我试图连接存储在字符指针中的两个字符串,但我做错了。有人可以指出它是什么吗?另外,我没有特意使用任何内置函数。
int main()
{
char *a = "abc";
char *b = "def";
char *c;
while(*a != '\0')
{
*c = *a;
a++;
c++;
}
while(*b != '\0')
{
*c = *b;
b++;
c++;
}
*c = '\0';
c -= 6;
while(*c!= '\0')
{
printf("%c", *c);
c++;
}
return 0;
最佳答案
你还没有为c
分配任何内存
b
和 c
获取静态分配的内存,当您这样做时:
char *a = "abc";
char *b = "def";
但 c 没有,所以你需要使用类似的方法分配内存:
char *c = malloc (x);
其中 x
是您需要容纳要插入的字符的字符数组的总长度(加 1,用于终止 NULL)。您还需要记住在行的某处free ()
它。
因为你没有做任何分配,这一行:
*c = *a;
会产生未定义的行为。
关于c - 使用指针的字符串连接中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46773628/