我已经将字符串文字定义为
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" */