我已将字符串文字定义为
char *name
我想向name
添加一个char(char定义为char d = 'a'
)。
我试过了
strcpy(name, d);
但是当我尝试打印时,我遇到了一个段错误。我怎么能这样做?
答案 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" */