将单引号附加到C中的字符串

时间:2014-10-17 19:59:40

标签: c c-strings

如何在C中将单引号连接到字符数组?

例如:我有一个值为FileName的char数组"hello world"。我想用这样的单引号括起你好的世界:"'hello world'"。该函数已通过FileName,因此我无法将数组初始化为所需的值。我必须在字符串的开头和结尾连接单引号。

1 个答案:

答案 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);
}