【发布时间】:2021-03-28 23:58:33
【问题描述】:
我声明了一个字符指针并动态分配内存并用字符串初始化它现在我想向指针添加字符。我尝试了以下代码,但它给出了分段错误(核心转储)错误。
#include <stdio.h>
int main()
{
char *ch;
ch = (char *)malloc(sizeof(char)*32);
ch = "hello";
ch[5] = 'k';
ch[6] = '\0';
printf("%s", ch);
return 0;
}
【问题讨论】:
-
ch = "hello"会覆盖指针,从而丢弃malloc内存。此外,它指向一个无法写入的字符串文字。请改用strcpy。 -
请不要转换
malloc的返回值。有关详细信息,请参阅here。
标签: c char-pointer