使用C向字符串文字添加字符



我已经将字符串文字定义为

char *name

并且我想要向name添加一个字符(该字符被定义为char d = 'a')。

我试过

strcpy(name, d);

但当我试图打印它时,我遇到了seg错误。我怎么能这么做?

使用name[strlen(name)] = d

char *name = malloc(80);
// some code that puts something in *name
strcpy(name, "Hello World");
char d = 'a'
size_t len = strlen(name);
if (len >= (80-1)) DealWithNotEnoughRoom(); 
name[len++] = d;
name[len] = '';

BTW:
char *name不是字符串文字。上面的"Hello World"是一个字符串
char *name是一个变量"name as pointer to char"。

您已经将name定义为指向内存中某个固定位置的指针(可能在初始化的数据段中)。你不需要一个指针,而是一个足够大的向量来容纳原始字符串和你想附加到的字符串

char d[100];  /* enough room for a string of 99 characters */
strcpy (d, "a");  /* initialize d with string "a" */
strcat (d, "b");  /* append "b" to d, resulting in "ab" */

如果您想附加存储在char变量中的单个字符,可以这样做:

char c='b';
char d[100];  /* enough room for a string of 99 characters */
strcpy (d, "a");  /* initialize d with string "a" */
d[strlen(d)+1]=''; /*  add the character stored in c to string d */
d[strlen(d)]=c;      /*            resulting in "ab"               */

最新更新