如何在C中将单引号连接到字符数组?
例如:我有一个值为FileName
的char数组"hello world"
。我想用这样的单引号括起你好的世界:"'hello world'"
。该函数已通过FileName
,因此我无法将数组初始化为所需的值。我必须在字符串的开头和结尾连接单引号。
答案 0 :(得分:1)
为了使其正常工作,调用者需要传递一个字符串,该字符串具有足够的空间用于另外两个引号。使这项工作的一种方法是分配一个临时缓冲区,在那里构造你的新字符串,并将其复制回原始字符串,如下所示:
void add_quotes(char *s) {
size_t len = strlen(s);
char tmp[len+3];
tmp[0] = '\'';
strcpy(tmp+1, s);
tmp[len+1] = '\'';
tmp[len+2] = '\0';
strcpy(s, tmp);
}
这在自动存储器中(即在堆栈上)分配临时缓冲区。如果字符串s
可能很长,请考虑使用动态内存分配:
void add_quotes(char *s) {
size_t len = strlen(s);
char *tmp = malloc(len+3);
tmp[0] = '\'';
strcpy(tmp+1, s);
tmp[len+1] = '\'';
tmp[len+2] = '\0';
strcpy(s, tmp);
free(tmp);
}