在C函数中,获取字符指针并向其添加字符

在C函数中,获取字符指针并向其添加字符,c,char,C,Char,我试图思考如何编写一个函数,获取char*并返回指向同一个char的指针,但在其末尾添加了几个常量字符 char* addExtension(char* FileName) { } 我认为,这正是标准库函数(用于“字符串连接”)所做的。你应该考虑使用它 还要注意缓冲区溢出的危险,像这样的函数(以及类似的strcat())本质上是不安全的,因为它不包含有关可用空间的信息。你真的无法做到这一点,无论如何也不能使用任意字符串。 字符串可以是: 常量(如字面上的“hello world”)。那些是

我试图思考如何编写一个函数,获取char*并返回指向同一个char的指针,但在其末尾添加了几个常量字符

char* addExtension(char* FileName)
{

}

我认为,这正是标准库函数(用于“字符串连接”)所做的。你应该考虑使用它


还要注意缓冲区溢出的危险,像这样的函数(以及类似的strcat())本质上是不安全的,因为它不包含有关可用空间的信息。

你真的无法做到这一点,无论如何也不能使用任意字符串。 字符串可以是:

  • 常量(如字面上的“hello world”)。那些是不能修改的
  • Char数组(如Char thingie[10])。他们已经确定了一定的空间-如果你 用完后,您会遇到非常友好的
    分段错误
    或更糟的情况
  • malloc
    'd指针-它们也有固定的空间量,并且需要
    自由
    d
您可以复制字符串并返回新字符串,但这可能会导致内存泄漏 如果你不照顾老的。范例

char *copycat(char *first, char *second) {
    char *result = malloc(strlen(first)+strlen(second)+1);
    strcpy(result, first);
    strcpy(result+strlen(first), second);
    return result;
}

+1对于幽默感@H2CO3