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

时间:2013-12-08 02:10:32

标签: c char string-literals

我已将字符串文字定义为

char *name

我想向name添加一个char(char定义为char d = 'a')。

我试过了

strcpy(name, d);

但是当我尝试打印时,我遇到了一个段错误。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

使用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] = '\0';

顺便说一句:
char *name不是字符串文字。 " Hello World"上面是一个字符串文字 char *name是一个变量" name作为指向char"。

的指针

答案 1 :(得分:0)

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

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]='\0'; /*  add the character stored in c to string d */
d[strlen(d)]=c;      /*            resulting in "ab"               */