0

我试图考虑如何编写一个函数来获取 char* 并返回指向同一个 char 的指针,但在添加到他的末尾几个常量字符之后。

char* addExtension(char* FileName)
{

}
4

2 回答 2

2

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

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

于 2013-03-20T11:50:56.587 回答
0

你真的不能这样做,无论如何都不能使用任意字符串。字符串可以是:

  • 常量(如文字“hello world”)。那些不能修改
  • Char 数组(如 char thingie[10])。他们有固定的空间 - 如果你用完了它,你会变得非常友好Segmentation fault或更糟。
  • malloc'd 指针 - 它们也有固定的空间量,需要freed.

您可以复制该字符串并返回一个新字符串,但如果您不处理旧字符串,可能会导致内存泄漏。例子

char *copycat(char *first, char *second) {
    char *result = malloc(strlen(first)+strlen(second)+1);
    strcpy(result, first);
    strcpy(result+strlen(first), second);
    return result;
}
于 2013-03-20T11:56:30.943 回答